【问题标题】:Create a dict of lists from lists从列表创建列表的字典
【发布时间】:2018-03-21 21:55:00
【问题描述】:

我可以通过 enumerate() 创建一个列表字典,如下所示:

def turn_to_dict(*args):
    return {i: v for i, v in enumerate(args)}


lst1 = [1, 2, 3, 4]
lst2 = [3, 4, 6, 7]
lst3 = [5, 8, 9]


x = turn_to_dict(lst1, lst2, lst3)

print(x)

输出:

{0: [1, 2, 3, 4], 
 1: [3, 4, 6, 7], 
 2: [5, 8, 9]
 }

我想要一个相同的东西:我希望键是列表的元素:

lst1 = ['a', 'b', 'c']
lst2 = [1, 2, 3, 4]
lst3 = [3, 4, 6, 7]
lst4 = [5, 8, 9]


def turn_to_dict(lst, *args):
    for k in lst:
        return {k: v for v in args}


x = turn_to_dict(lst1, lst2, lst3, lst4)

print(x)

我得到:

{'a': [5, 8, 9]}

我想要的是:

{a: [1, 2, 3, 4], 
 b: [3, 4, 6, 7], 
 c: [5, 8, 9]
 } 

我没有得到任何错误,只是没有得到我认为应该得到的输出。

【问题讨论】:

    标签: python python-3.6 dictionary-comprehension


    【解决方案1】:

    您需要将密钥列表与值一起压缩:

    def turn_to_dict(lst, *args):
        return {k: v for k, v in zip(lst, args)}
    

    这会将lst 中的元素与args 中的每个列表配对。

    这里根本不需要使用字典推导,dict() 直接接受可迭代的键值对:

    return dict(zip(lst, args))
    

    如果 keyvalue 表达式不仅仅是对 2 值元组的第一个和第二个元素的引用,您只需要字典理解。

    演示:

    >>> lst1 = ['a', 'b', 'c']
    >>> lst2 = [1, 2, 3, 4]
    >>> lst3 = [3, 4, 6, 7]
    >>> lst4 = [5, 8, 9]
    >>> args = (lst2, lst3, lst4)
    >>> {k: v for k, v in zip(lst1, args)}
    {'a': [1, 2, 3, 4], 'b': [3, 4, 6, 7], 'c': [5, 8, 9]}
    >>> dict(zip(lst1, args))
    {'a': [1, 2, 3, 4], 'b': [3, 4, 6, 7], 'c': [5, 8, 9]}
    

    【讨论】:

      【解决方案2】:

      你不需要这一切:

      dict(zip(lst1, [lst2,lst3, lst4]))
      

      使用功能:

      def turn_to_dict(lst, *args):
          return dict(zip(lst, args))
      

      在:

      lst1 = ['a', 'b', 'c']
      lst2 = [1, 2, 3, 4]
      lst3 = [3, 4, 6, 7]
      lst4 = [5, 8, 9]
      

      输出:

      >>> turn_to_dict(lst1,lst2,lst3,lst4)
      {'a': [1, 2, 3, 4], 'c': [5, 8, 9], 'b': [3, 4, 6, 7]}
      

      【讨论】:

        猜你喜欢
        • 2018-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-09
        相关资源
        最近更新 更多