Вы можете использовать модуль random
для выбора случайной строки.
Для данного файла definitions.csv
term1,def1
term2,def2
term3,def3
term4,def4
term5,def5
Используйте следующий код для получениячто вы хотите.
import csv
import random
data = [r for r in csv.reader(open('definitions.csv'))]
test = random.choice(data)
print(test)
# ['term3', 'def3']
С этим вы можете использовать test[0]
и test[1]
, чтобы получить термин и определение.Если вы хотите использовать словарь для этого, вместо этого вы можете использовать словарное понимание.
data = {r[0]: r[1] for r in csv.reader(open('definitions.csv'))}
term = random.choice(list(data.keys()))
print(term, data[term])
# term2 def2
Или, если вы действительно хотите использовать функцию csv.DictReader()
, вы можете использовать ее, если у вас естьЗаголовки в вашем файле.Я добавил заголовки для этого последнего примера.
data = csv.DictReader(open('definitions.csv'))
term = random.choice([i for i in data])
print(term)
# {'term': 'term1', ' definition': 'def1'}
Будучи любопытным, я решил определить, сколько времени это займет с 5000 определений.Если у вас много терминов, я бы подумал об использовании маршрута понимания.
List Comprehension: 100 loops, best of 3: 3.08 ms per loop
Dict Comprehension: 100 loops, best of 3: 3.60 ms per loop
Dict Reader: 100 loops, best of 3: 13.50 ms per loop