我需要合并两个字典 d1 和 d2,其中:
d1 = {0: [array([ 42.9017, -78.6631]), array([ 41.5372, -74.0526]), array([ 39.8017, -89.6437])],
1: [array([ 34.7269, -86.5673]), array([ 29.7229, -98.0742])],
2: [array([ 35.9878, -115.1167]), array([ 34.0316, -117.6187])],array([ 61.6303, -148.9872])]}
d2 = {0: [array([5, 5], dtype=int64), array([44, 44], dtype=int64),array([1, 1], dtype=int64)],
1: [array([1, 1], dtype=int64), array([12, 12], dtype=int64), array([1, 1], dtype=int64)],
2: [array([1, 1], dtype=int64), array([12, 12], dtype=int64), array([1, 1], dtype=int64)]}
合并 d1 和 d2 后,我需要字典 d3,这样,d1 的 key:0 的第一个值与 d2 的 key:0 的第一个值合并。
期望 d3 为:
d3 = {0: [array([ 42.9017, -78.6631]), array([5, 5], dtype=int64), array([ 41.5372, -74.0526]), array([44, 44], dtype=int64) , array([ 39.8017, -89.6437]), array([1, 1], dtype=int64)],
1: [array([ 34.7269, -86.5673]), array([1, 1], dtype=int64), array([ 29.7229, -98.0742]), array([12, 12], dtype=int64)],
2: [array([ 35.9878, -115.1167]),array([1, 1], dtype=int64),array([1, 1], dtype=int64), array([12, 12], dtype=int64), array([ 34.0316, -117.6187])],array([1, 1], dtype=int64), array([ 61.6303, -148.9872])]}
我尝试了多种方法,但似乎没有任何方法可以正常工作。任何帮助深表感谢!谢谢!
我希望我已经很好地理解了你的问题。您可以使用itertools.zip_longest
以交替从两个库的值之间:
from itertools import zip_longest
out = {}
for k in d1.keys() | d2.keys():
for v1, v2 in zip_longest(d1.get(k, []), d2.get(k, [])):
out.setdefault(k, [])
if not v1 is None:
out[k].append(v1)
if not v2 is None:
out[k].append(v2)
print(out)
印刷:
{
0: [
array([42.9017, -78.6631]),
array([5, 5]),
array([41.5372, -74.0526]),
array([44, 44]),
array([39.8017, -89.6437]),
array([1, 1]),
],
1: [
array([34.7269, -86.5673]),
array([1, 1]),
array([29.7229, -98.0742]),
array([12, 12]),
array([1, 1]),
],
2: [
array([35.9878, -115.1167]),
array([1, 1]),
array([34.0316, -117.6187]),
array([12, 12]),
array([61.6303, -148.9872]),
array([1, 1]),
],
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句