【发布时间】:2021-04-27 03:57:38
【问题描述】:
我正在将 csv 文件转换为字典,两个 csv 文件相似但具有不同的值。所以一个csv文件有{name, state, website},另一个有{name, state, car}。这些文件中有一些相同的人,所以我想遍历键,如果它们具有相同的名称,则添加缺少的键,例如,如果两者都有一个名叫 John Williams 的人,它将找到该名称并创建一个新字典说 {name: 'John Williams', state: 'FL", website "https://helpmeplease.com", car: "Kia"}. 如果有新人,那么我希望它创建一个新行并添加它进入字典。
我已将 csv 文件转换为字典,目前我正在比较关键的“名称”,但我被困在了这里,不知道从这里去哪里。
import csv
filename1 ="example.csv"
filename2 = "example2.csv"
blue = {}
with open(filename1, 'r', newline='') as f:
for line in csv.DictReader(f):
blue[line['name']] = line
with open(filename2, 'r', newline='') as h:
for line in csv.DictReader(h):
if line['name'] in blue.keys():
#This is where I'm stuck
else:
blue[line['name']] = line
【问题讨论】:
-
fire[line['name']].update(line) -
您还可以通过将
fire设置为defaultdict(dict)来简化此操作;那么您可以只运行两个 CSV 并对所有条目执行update,而不必测试它们是否已经存在。我会继续发布一个答案,说明它是如何工作的......
标签: python loops csv dictionary key