csv的变量不匹配/返回.DictReader值



我有一个关于如何将变量与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读取和返回的所有数据都是字符串。

最新更新