【发布时间】:2020-03-12 23:55:40
【问题描述】:
我有一本字典和一个 CSV 文件(实际上是制表符分隔的):
dict1:
{1 : ['Charles', 22],
2: ['James', 36],
3: ['John', 18]}
data.csv:
[ 22 | Charles goes to the cinema | Activity ]
[ 46 | John is a butcher | Profession ]
[ 95 | Charles is a firefighter | Profession ]
[ 67 | James goes to the zoo | Activity ]
我想在dict1的值的第一项中获取字符串(名称)并在csv的第二列中搜索它。如果名字出现在句子中,我想打印第一个(并且只有第一个)句子。
但我在搜索时遇到问题 - 如何在迭代 dict1 时访问列/行数据?我尝试过这样的事情:
with open('data.csv', 'r', encoding='utf-8') as file:
reader = csv.reader(file, delimiter='\t')
for (id, (name, age)) in dict1.items():
if name in reader.row[1] # reader.row[1] is wrong!!!
print(reader.row[1])
【问题讨论】:
-
这里不用遍历字典,这就是 O(1) 查找速度的重点
-
你的 csv 有多大?
-
@roganjosh 如果您想使用字典中的每个键,您可以遍历字典...
-
方法是倒退的。您希望遍历行并检查条目是否在字典中,而不是迭代字典并查看它是否与每一行匹配
-
大家好,字典大约有 5,000 行,而 cab 大约有 20,000。