繁体   English   中英

Python 从字典键和列表值的混合构建字典

[英]Python build dict from a mixture of dict keys and list values

输入正文是:

{'columns': ['site_ref', 'site_name', 'region'], 'data': [['R005000003192', 'AIRTH DSR NS896876', 'WEST'], ['R005000003195', 'AIRTHREY DSR NS814971', 'WEST']]}

我如何构建一个新的字典,它将列值作为键,然后为 1 到 n 的数据值中的每个列表项填充一个新的字典?

所需的 output 将是:

{
  {
    "site_ref": "R005000003192",
    "site_name": "AIRTH DSR NS896876",
    "region": "WEST"
  },
{
    "site_ref": "R005000003195",
    "site_name": "AIRTH DSR NS896876",
    "region": "WEST"
  }
}

我试图迭代:

for i in range(len(result["data"])):
    new_dict = []
    new_dict.append(dict(zip(result["columns"], result["data"][i])))

但似乎无法让它完成迭代

请注意,如果 output 应该是一个字典,则您将需要密钥,目前在提供的所需 output 中缺少这些密钥。 但是,您可以创建一个字典列表,如下所示:

d = {'columns': ['site_ref', 'site_name', 'region'], 'data': [['R005000003192', 'AIRTH DSR NS896876', 'WEST'], ['R005000003195', 'AIRTHREY DSR NS814971', 'WEST']]}
res = [{k: v for k, v in zip(d['columns'], datum)} for datum in d['data']]
print(res)

印刷

[{'site_ref': 'R005000003192',
  'site_name': 'AIRTH DSR NS896876',
  'region': 'WEST'},
 {'site_ref': 'R005000003195',
  'site_name': 'AIRTHREY DSR NS814971',
  'region': 'WEST'}]

如果您毕竟想要键,您可以例如使用键的编号(即 1 表示第一个数据,n 表示第 n 个数据),如下所示:

res = {i+1: {k: v for k, v in zip(d['columns'], datum)} for i, datum in enumerate(d['data'])}
print(res)

印刷

{1: {'site_ref': 'R005000003192',
  'site_name': 'AIRTH DSR NS896876',
  'region': 'WEST'},
 2: {'site_ref': 'R005000003195',
  'site_name': 'AIRTHREY DSR NS814971',
  'region': 'WEST'}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM