我想使用以下代码将我读过的两个CSV文件合并到python中
a = csv.DictReader(csv1)
b = csv.DictReader(csv2)
aMap = {}
bMap = {}
for row in a:
aMap[row['id']] = row
for row in b:
bMap[row['id']] = row
现在我应该有两个词典,其键是来自两个CSV的'id'字段。我想要做的是从aMap获取所有内容,并将值添加到bMap的相应键值。例如,在aMap中,字典中的键看起来像这样,
'123456' : {'name': 'SomeName', 'type': 'someType'}
我在bMap中的内容是
'123456' : {'location' : 'someLocation'}
我想要的是,
'123456' : {'location' : 'someLocation', 'name' : 'SomeName', 'type' : 'someType'}
是否有特定功能或是否必须创建新词典?类似于update()的东西,只是附加值而不是更新。
答案 0 :(得分:1)
您可以使用一个collections.defaultdict
,并使用update
合并来自csv2的行。
import collections
aMap = collections.defaultdict(dict)
for row in csv.DictReader(csv1):
aMap[row['id']] = row
for row in csv.DictReader(csv2):
aMap[row['id']].update(row)
答案 1 :(得分:0)
我认为没有内置功能。所以你必须做像
这样的事情def AppendToValues(from_map, to_map):
for key in from_map:
to_map[key] = to_map.get(key, {})
to_map.update(from_map.get(key, {}))
从地图中删除键值:
del my_map[key]
答案 2 :(得分:0)
我相信您可以在集合模块中使用defaultdict。 http://docs.python.org/library/collections.html#collections.defaultdict
我认为这些例子非常接近你想要的。