代码之家  ›  专栏  ›  技术社区  ›  Sai Kumar

将列表中的每个元素转换为键值对

  •  2
  • Sai Kumar  · 技术社区  · 7 年前

    我有两张单子

    list1 = [1,a,2,b,3,c]
    list2 = [5,d,6,e,7,f]
    

    list(zip(list1, list2))

    我得到的是:

    [(1, 5), ('a', 'd'), (2, 6), ('b', 'e'), (3, 7), ('c', 'f')]
    

    我想要这样的东西作为我的输出:

    {1:a, 5:d, 2:b, 6:e, 3:c,7:f}
    

    感谢您的帮助。

    2 回复  |  直到 7 年前
        1
  •  8
  •   Chris_Rands    7 年前

    通过 iter zip :

    >>> it = iter(list1 + list2)
    >>> dict(zip(it,it))
    {1: 'a', 2: 'b', 3: 'c', 5: 'd', 6: 'e', 7: 'f'}
    
        2
  •  2
  •   Cory Kramer    7 年前

    >>> values = list1 + list2
    >>> values
    [1, 'a', 2, 'b', 3, 'c', 5, 'd', 6, 'e', 7, 'f']
    

    然后使用 dict 理解:按其他元素跨步浏览列表,并按相同的步幅压缩,但偏移一个。

    >>> {key:value for key,value in zip(values[::2], values[1::2])}
    {1: 'a', 2: 'b', 3: 'c', 5: 'd', 6: 'e', 7: 'f'}