【问题标题】:how to merge 2 list as a key value pair in python [duplicate]如何在python中将2个列表合并为键值对[重复]
【发布时间】:2013-01-17 11:49:45
【问题描述】:

是否可以将两个列表组合为键值对。两个列表中的元素数量相同。

我有两个列表如下。

list1 = ["a","b","c","d","e"]
list2 = ["1","2","3","4","5"]

我如何像下面这样组合

dict['a':1,'b':2,'c':3,'d':4,'e':5]

【问题讨论】:

    标签: python


    【解决方案1】:

    dictA = dict(zip(list1, list2))

    有关zip 函数的更多信息可在此处获得: http://docs.python.org/2/library/functions.html#zip

    上面的行首先计算zip(list1, list2),它创建了一个列表,其中包含两个列表的第n个元素中的n个元组。然后,dict 调用获取元组列表并根据元组中的第一个值创建键,相应键的值是第二个值。

    【讨论】:

    • 这是有效的,但问题是它不是一对一的映射。我也试过 dict(zip(list1, map(list2)))
    • 这不是你想要的吗?在 [1] 中:list1 = ["a","b","c","d","e"] 在 [2] 中:list2 = ["1","2","3","4 ","5"] 在 [3] 中:dicta = dict(zip(list1, list2)) 在 [4] 中:打印 dicta {'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': '4'}
    • 是的,这正是我想要的。非常感谢。
    【解决方案2】:

    试试这个:

    dict (zip (list1, list2))
    

    【讨论】:

      【解决方案3】:

      这样做:

      my_dict = dict(zip(list1, map(int, list2)))
      

      或者使用字典理解:

      my_dict = {k: int(v) for k, v in zip(list1, list2)}
      
      • map 将函数映射到可迭代对象的每个元素。

        map(int, list2) == [1, 2, 3, 4, 5]
        
      • zip 给出每个列表的第 n 个元素的元组列表。但是,如果列表长度不同,则会上升到最短列表的长度。

        zip('foo', '1234') == [('f', '1'), ('o', '2'), ('o', '3')]
        

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-27
        • 2015-09-17
        • 2020-05-20
        • 2021-12-20
        • 1970-01-01
        • 2012-05-30
        • 2021-02-11
        • 2018-09-08
        相关资源
        最近更新 更多