python - 与 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
都是字符串。
推荐阅读
- angular - Angular:不清楚 Intellij 为什么会产生未解决的变量警告
- apache-kafka - Kafka Connector Task Reconfiguration without rebalancing
- java - Question about "Unexpected type" for Dynamic Array
- c++ - FreeRTOS.h file not found - VS Code for Mac despite includePath modified & all filed in project folder
- angular - Angular - 根据 API 调用绘制不同类型的图表/表格
- c - Embedded Coder:将 C 代码连接到定点模型输入
- php - 为什么mysqli将字符串设置为0?
- node.js - 应用相同标志的多个实例时自定义操作字符串解析?
- angular - ChartJs 在显示我的数组数据时出错
- javascript - 计算函数被调用次数的 Javascript 函数