读取 csv 并在 Python 中随机打印行和列的最佳方法?
Best way to read a csv and randomly print a row and column in Python?
我正在尝试创建一个术语和定义程序。我有一个 csv,其中有两列,术语和定义。我正在尝试读取文件,然后在 csv 中随机 select 一行并打印定义,然后需要输入响应来猜测术语。
到目前为止,我已经弄清楚了如何读取文件,但是我仍然坚持如何随机 select 一行,然后询问该行的 column2,然后等待并检查 column 的响应1.
到目前为止我拥有的是:
re = open('Psycstudy.csv')
spreadsheet = csv.DictReader(re)
这将它放入字典,但现在我不确定如何随机 select 定义和术语。提前感谢您的帮助。
您可以使用 random
模块来 select 随机行。
给定一个文件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()
函数,您也可以使用它,前提是您的文件中有 headers。我为最后一个示例添加了 headers。
data = csv.DictReader(open('definitions.csv'))
term = random.choice([i for i in data])
print(term)
# {'term': 'term1', ' definition': 'def1'}
出于好奇,我决定计算 5,000 个定义所花费的时间。如果你有很多术语,我会考虑使用理解路线。
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
我正在尝试创建一个术语和定义程序。我有一个 csv,其中有两列,术语和定义。我正在尝试读取文件,然后在 csv 中随机 select 一行并打印定义,然后需要输入响应来猜测术语。
到目前为止,我已经弄清楚了如何读取文件,但是我仍然坚持如何随机 select 一行,然后询问该行的 column2,然后等待并检查 column 的响应1.
到目前为止我拥有的是:
re = open('Psycstudy.csv')
spreadsheet = csv.DictReader(re)
这将它放入字典,但现在我不确定如何随机 select 定义和术语。提前感谢您的帮助。
您可以使用 random
模块来 select 随机行。
给定一个文件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()
函数,您也可以使用它,前提是您的文件中有 headers。我为最后一个示例添加了 headers。
data = csv.DictReader(open('definitions.csv'))
term = random.choice([i for i in data])
print(term)
# {'term': 'term1', ' definition': 'def1'}
出于好奇,我决定计算 5,000 个定义所花费的时间。如果你有很多术语,我会考虑使用理解路线。
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