【问题标题】:List of dictionaries to dictionary [closed]字典列表[关闭]
【发布时间】:2021-03-03 01:30:59
【问题描述】:

我想做一些 dict 理解以更好地组织数据

原文:

mach = [{'name': 'Software 1', 'code': 'F105', 'version': '12.70.2', 'size': '115.25 Mb'},
        {'name': 'Software 2', 'code': 'F118', 'version': '12.71.22', 'size': '105.25 Mb'},
        {'name': 'Software 3', 'code': 'F115', 'version': '12.71.22', 'size': '105.25 Mb'},
        ....
        {'name': 'Software x', 'code': 'F120', 'version': '12.71.22', 'size': '105.25 Mb'}]

需要的输出字典:

    new_mach = {'Software 1': 'F105',
                'Software 2': 'F118',
                'Software 3': 'F115',
                ...
                'Software x': 'F120'}

【问题讨论】:

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


【解决方案1】:

很简单:

new_match = {}

for elem in match:
    new_match[elem["name"]] = elem["code"]

【讨论】:

  • 模式“构造一个内置容器,迭代另一个容器,并将第二个容器中的元素添加到第一个容器”通常是理解的完美匹配。
  • 是的,它是一个在很多情况下都非常有用的基础结构
【解决方案2】:

您可以使用 dict comprehension

>>> mach = [
...     {
...         'name': 'Software 1',
...         'code': 'F105',
...         'version': '12.70.2',
...         'size': '115.25 Mb'
...     },
...     {
...         'name': 'Software 2',
...         'code': 'F118',
...         'version': '12.71.22',
...         'size': '105.25 Mb'
...     },
...     {
...         'name': 'Software 3',
...         'code': 'F115',
...         'version': '12.71.22',
...         'size': '105.25 Mb'
...     },
...     {
...         'name': 'Software x',
...         'code': 'F120',
...         'version': '12.71.22',
...         'size': '105.25 Mb'
...     }
... ]
>>>
>>> new_mach = {d['name']: d['code'] for d in mach}
>>> new_mach
{'Software 1': 'F105', 'Software 2': 'F118', 'Software 3': 'F115', 'Software x': 'F120'}

【讨论】:

  • 这样做。接受这个作为答案,因为它是您经常看到的“pythonic”方法而不是 for 循环的解决方案。
猜你喜欢
  • 1970-01-01
  • 2016-03-15
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-08
相关资源
最近更新 更多