【问题标题】:Concatenating Dictionaries连接字典
【发布时间】:2023-04-10 09:47:01
【问题描述】:

我有三个列表,第一个是名称列表,第二个是字典列表,第三个是数据列表。列表中的每个位置对应于其他列表中的相同位置。 List_1[0]在List_2[0]和List_3[0]等中有对应的数据。我想把这三个列表变成字典里面的字典,List_1中的值是主键。如何在保持一切井井有条的同时做到这一点?

【问题讨论】:

    标签: python dictionary merge key


    【解决方案1】:
    >>> a = [1,2,3]
    >>> b = [4,5,6]
    >>> c = [7,8,9]
    >>> dict(zip(a, zip(b, c)))
    {1: (4, 7), 2: (5, 8), 3: (6, 9)}
    

    有关zip 的更多信息,请参阅documentation

    正如下面 lionbest 指出的那样,如果您的输入数据很大,您可能需要查看 itertools.izip()izipzip 的作用基本相同,但它创建的是迭代器而不是列表。这样,您就不会在创建字典之前创建大型临时列表。

    【讨论】:

    • 如果 a,b,c 很大,我建议使用 itertools 模块中的 izip。
    【解决方案2】:

    Python 3:

    combined = {name:dict(data1=List_2[i], data2=List_3[i]) for i, name in enumerate(List_1)}
    

    Python 2.5:

    combined = {}
    for i, name in enumerate(List_1):
        combined[name] = dict(data1=List_2[i], data2=List_3[i])
    

    【讨论】:

      【解决方案3】:

      如果这些事情的顺序很重要,你不应该使用字典。根据定义,它们是无序的。您可以使用浮动的many ordered_dictionary implementations 之一,或者等待python 2.7 或3.1,它将在集合模块中包含一个有序的字典实现。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-09
        • 2020-11-20
        • 1970-01-01
        • 1970-01-01
        • 2017-04-15
        • 2013-12-07
        • 2021-07-20
        • 1970-01-01
        相关资源
        最近更新 更多