我有两个具有多个值的字典:
t={'Musée de Armée':130102845,48.8570374,2.3118779}
而另一个 s 是 t 的排序有序字典:
s={'193 Gallery':3359610327,48.8624495,2.3652262}
两个字典的长度都是 800,我想合并两个字典,同时保留它们的值,这样最终结果是:
t={'Musée de Armée':130102845,48.8570374,2.3118779,'193 Gallery',3359610327,48.8624495,2.3652262}
这是我尝试过的:
s = OrderedDict(sorted(t.items()))
for k,v in t,s:
t[k].append(s.values())
它给我一个关于解包的值太多的错误。 所以我想将已排序和未排序的字典合二为一。
答案 0 :(得分:1)
通常,您可以像这样从另外两个创建一个新的 OrderedDict:
my_od = OrderedDict(**s, **t)
答案 1 :(得分:0)
你可以试试:
from collections import defaultdict
u = defaultdict(list)
for k, v in in s, t:
u[k].extend(v)
答案 2 :(得分:0)
对于那些回答我的问题并提供指导的人,感谢您的帮助。发布此问题后的第二天,我找到了解决方案。我只是没有时间发布它。
然而,对我有用的是以类似数组的方式遍历字典项和 zip 方法:< /p>
<块引用>
这就是我所做的:
d = dict()
for (k, v), (k2, v2) in zip(t.items(), s.items()):
d[k] = [v[0], v[1], v[2], k2, v2[0], v2[1], v2[2]]
答案 3 :(得分:0)
zip
当你有配对元素时,确实是一个很好的工具,就像你的情况一样。由于您没有在问题中说值中总是恰好有三个数字,因此这里有一个更通用的解决方案,它也按您的意图修改了 t
:
for key, (newkey, newval) in zip (t, s.items()):
t[key].extend([ newkey ] + newval)
这会将 s 中的键和值附加到 t 中的条目。或者您可以分两步完成,这是一个品味问题:
for key, (newkey, newval) in zip (t, s.items()):
t[key].append(newkey)
t[key].extend(newval)