我有两个字典需要合并,同时扩展键#以避免覆盖。我找不到合适的解决办法。我该怎么做?
dic1 = {0: ['Café Replika', '252 Rue Rachel E, USA'], 1: ['Café Tuyo', '370 Rue Marie-Anne Est, USA'] }
dic2 = {0: ['Café Bistro', '4190 St Laurent , USA'], 1: ['Café Portugais', '4051 St Dominique St, USA']}
我需要的输出是:
finaldic = {0: ['Café Replika', '252 Rue Rachel E, USA'], 1: ['Café Tuyo', '370 Rue Marie-Anne Est, USA'], 2: ['Café Bistro', '4190 St Laurent , USA'], 3: ['Café Portugais', '4051 St Dominique St, USA']}
感谢的帮助
如果我正确理解您的示例,您希望在合并结果中为两个字典的值分配新键。您可以使用枚举两个字典中的值:
dic1 = {0: ['Café Replika', '252 Rue Rachel E, USA'], 1: ['Café Tuyo', '370 Rue Marie-Anne Est, USA'] }
dic2 = {0: ['Café Bistro', '4190 St Laurent , USA'], 1: ['Café Portugais', '4051 St Dominique St, USA']}
merged = dict(enumerate((*dic1.values(),*dic2.values())))
结果:
{
0: ['Café Replika', '252 Rue Rachel E, USA'],
1: ['Café Tuyo', '370 Rue Marie-Anne Est, USA'],
2: ['Café Bistro', '4190 St Laurent , USA'],
3: ['Café Portugais', '4051 St Dominique St, USA']
}
您所描述的内容不会有一个内置的解决方案,因为它没有太多逻辑。您似乎完全忽略了键,并将特殊字典视为列表。
您要求的函数需要:
def foo_dicts(x, y):
???
d1 = {0: ['a1', 'a2'], 1: ['b1', 'b2']}
d2 = {0: ['c1', 'c2'], 1: ['d1', 'd2']}
foo_dicts(d1, d2) == {0: ['a1', 'a2'], 1: ['b1', 'b2'], 2: ['c1', 'c2'], 3: ['c1', 'c2']}
如果你真的有列表列表,这将只是+
:
def foo_lists(x, y):
return x + y
d1 = [['a1', 'a2'], ['b1', 'b2']]
d2 = [['c1', 'c2'], ['d1', 'd2']]
foo_lists(d1, d2) == [['a1', 'a2'], ['b1', 'b2'], ['c1', 'c2'], ['c1', 'c2']]
如果你坚持保留索引字典,最简单的方法是在连接它们之后将它们枚举回dict:
def foo_dicts(x, y):
return dict(enumerate(v for d in (x, y) for k, v in sorted(d.items()))