如何在python中合并两个具有相同键和数组类型值的嵌套字典?

sparsh_ag

我需要合并两个字典 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在python中具有相同键的两个不同字典中组合值

如何在两个对象数组中合并具有相同键的属性?

在具有相同键的字典中合并两个Python字典

Python 3.x:合并两个具有相同键和值的字典

如何在嵌套字典中合并具有相同键的值?(没有用)

如何将两个列表中具有相同键的字典值相加?

如何在python中的字典中具有两个键和一个值

如何在Python中合并具有公共和不同键的两个字典?

如何在JSON数组中声明两个具有相同键但值不同的JSON对象

在两个列表中合并具有相同特定键和值的字典的最快方法是什么?

如何合并两个具有相同键名的字典

如何在python中使用相同的键组合(附加值)两个嵌套字典?

如何匹配和合并具有相同键的两个对象数组

如何获得具有不同键但在php中具有相同值的两个多维数组的差异?

如何合并具有相同键的一个或多个嵌套数组值

减去具有相同键的两个 python 字典的值

Rails:如果特定键具有相同的值,如何合并两个哈希?

将两个列表合并到python中具有多个键的字典列表中

如何让JooQ合并两个不同的表,它们具有相同的列和数据类型?

如何从两个单独的数组中创建具有两个键/值对的对象

查找两个不同的键在 2 个 PHP 数组中是否具有相同的值

是否有任何代码可以在 python 中合并两个嵌套的字典值?

在两个PHP数组中获取具有相同键但值不同的元素

如何在Python中根据它们的键和值合并两个字典?

如何将具有相同键的字典的值从字典列表中合并为一个值?

如何在角度6中合并两个相同类型的可观察数组?

如何:在 PHP 中组合两个数组中具有相同键的值

Python - 如何在 django 模板中并排显示所有值的两个键的字典值

将两个列表合并为字典时,如何在不丢失字典python中的任何值的情况下添加键的值?