【问题标题】:Python - convert list to dictPython - 将列表转换为字典
【发布时间】:2016-10-25 01:56:17
【问题描述】:

我有以下清单:

l = [('Alice',12),('Bob',10),('Celine',11)]

我想得到以下dict(正如下面评论中正确指出的那样,这不是字典。实际上,我只想要一个字典列表):

[
    {'name':'Alice','age':12},
    {'name':'Bob','age':10},
    {'name':'Celine','age':11}
]

有没有办法可以使用dict comprehension 来实现这一点?

【问题讨论】:

  • 这不是字典,因为你的结构中没有键,也许你的意思是字典列表?
  • 有一种方法可以在 list-comprehension 中使用 dict-comprehension,是的,但是您能展示一下您尝试过的内容吗?
  • 为什么要使用{'name':name, 'age':age} 的多个字典而不是{name:age, name:age...} 的单个字典?
  • @TigerhawkT3:生成的结构将作为另一个模块的输入,该模块需要我上面描述的字典结构。其他模块不可编辑。

标签: python list python-2.7 dictionary dict-comprehension


【解决方案1】:

您可以通过这种方式创建字典列表

d = [{'name': x[0], 'age': x[1]} for x in l]

你的例子有一个集合/字典?的字典 这实际上是不可能的,因为字典不能被散列,因此可以在集合中使用或作为字典键。

【讨论】:

    【解决方案2】:

    这将是一个字典列表,因为每个条目都必须有一个键才能使整个内容成为字典。

    您可以像这样在列表理解中使用字典制作一个:

    [{'name': name, 'age': age} for name, age in l]
    

    另请注意,虽然字典本身是无序的,但此字典列表将保留列表 l 的顺序。

    【讨论】:

      【解决方案3】:

      你可以做一个函数来做它

      def list2dict(list_):
          changed=[{'name':i[0],'age':i[1]} for i in list_]
          return changed
      

      然后打电话

      l=[('Alice',12) , ('Bob',10) , ('Celine',11)]
      d=list2dict(l)
      

      在 python 3.4.4 中测试

      【讨论】:

        猜你喜欢
        • 2015-07-23
        • 1970-01-01
        • 2015-11-14
        • 2022-12-04
        • 2011-11-18
        • 2022-08-16
        • 2019-02-10
        • 1970-01-01
        • 2011-12-08
        相关资源
        最近更新 更多