【问题标题】:Convert a list of lists to a dictionary将列表列表转换为字典
【发布时间】:2019-06-11 04:24:15
【问题描述】:

如何从 Python 列表列表创建字典,以便第一行是键,其余的是该键下的列表?

x = [['A', 'B', 'C'],
 [100, 90, 80],
 [88, 99, 111],
 [45, 56, 67],
 [59, 61, 67],
 [73, 79, 83],
 [89, 97, 101]]

目前我得到了一个 dict 理解:

{i[0]: i[1:] for i in x}

{'A': ['B', 'C'],
 100: [90, 80],
 88: [99, 111],
 45: [56, 67],
 59: [61, 67],
 73: [79, 83],
 89: [97, 101]}

想要的结果是:

{
"A": [100, 88, 45, 59, 73, 89],
"B": [90, 99, 56, 61, 79, 97],
"C": [80, 111, 67, 83, 101],
}

如何以正确的方式对字典理解进行切片?

【问题讨论】:

    标签: python python-3.x dictionary-comprehension


    【解决方案1】:

    您可以选择zip

    wanted = {a[0]: list(a[1:]) for a in zip(*x)}
    

    或者如果你熟悉拆包:

    wanted = {k: v for k, *v in zip(*x)}
    

    【讨论】:

      【解决方案2】:

      For 循环和列表理解:

      x = [['A', 'B', 'C'],
      [100, 90, 80],
      [88, 99, 111],
      [45, 56, 67],
      [59, 61, 67],
      [73, 79, 83],
      [89, 97, 101]]
      dict1={}
      
      for i,k in  enumerate( x[0]):
          dict1[k]=[x1[i] for x1 in x[1:]]
      print(dict1)
      #{'A': [100, 88, 45, 59, 73, 89], 'B': [90, 99, 56, 61, 79, 97], 'C': [80, 111, 67, 67, 83, 101]}
      

      【讨论】:

        猜你喜欢
        • 2017-04-23
        • 2021-10-13
        • 2015-07-23
        • 1970-01-01
        • 2014-01-20
        • 2020-05-23
        • 1970-01-01
        相关资源
        最近更新 更多