我有一个关于如何将变量与DictReader头和行匹配的问题。
我有以下CSV设置:
OrderedDict([('name', 'Bob'), ('cash', '2'), ('food', '8'), ('drink', '11')])
OrderedDict([('name', 'Mary'), ('cash', '3'), ('food', '9'), ('drink', '2')])
我还从另一个文件中获取了一些变量。
maximum_number
是最大重复类别的计数器,而maximum_category
是相关联的类别。
with open(database_name, newline='') as csvfile:
dictionary = csv.DictReader(csvfile)
for row in dictionary:
if maximum_number in row[maximum_category]:
print(row['name'])
例如,如果maximum_category
是食物,而maximum_number
是9,我想从上面两个集合中返回Mary
(来自名称(。如果类别是饮料,数字是11,我想返回Bob
。
我正在尝试Python,所以我可能缺少一些基本的东西,但我想得到一些建议,说明为什么上面的方法无效,以及最好的方法是什么。
您还没有明确指出您的代码;不起作用";,但对我来说似乎是这样。下面是一个使用以下.csv文件的可运行示例:
name,cash,food,drink
Bob,2,8,11
Mary,3,9,2
代码:
import csv
database_name = 'ordered_dict_test.csv'
maximum_category = 'food'
maximum_number = '9'
with open(database_name, newline='') as csvfile:
dictionary = csv.DictReader(csvfile)
for row in dictionary:
if maximum_number in row[maximum_category]:
print(row['name'])
maximum_category = 'drink'
maximum_number = '11'
with open(database_name, newline='') as csvfile:
dictionary = csv.DictReader(csvfile)
for row in dictionary:
if maximum_number in row[maximum_category]:
print(row['name'])
并打印以下内容:
Mary
Bob
我怀疑问题可能是没有意识到DictReader
读取和返回的所有数据都是字符串。