【问题标题】:Replace dictionaries keys with values from list用列表中的值替换字典键
【发布时间】:2018-07-10 10:10:18
【问题描述】:
keys = ['id', 'name', 'address']

list = [{'Value': 1}, {'Value': 'Example name'}, {'VarCharValue': 'GA'}]

寻找最 Pythonic 的方式来替换 key dicts 键。我尝试使用 for 循环和列表索引,但它很难看。异常结果:

list = [{'id': 1}, {'name': 'Example name'}, {'address': 'GA'}]

【问题讨论】:

  • 旁注,不要隐藏内置函数,使用 lstlist_L 代替 list 作为变量名。
  • [{k: list(d.values()).pop()} for k, d in zip(keys, lst)]

标签: python python-3.x list dictionary


【解决方案1】:

您可以对zip 使用列表推导式。要提取字典中的唯一值d,可以使用next(iter(d.values()))list(d.values())[0]

K = ['id', 'name', 'address']

L = [{'Value': 1}, {'Value': 'Example name'}, {'VarCharValue': 'GA'}]

res = [{k: next(iter(v.values()))} for k, v in zip(K, L)]

[{'id': 1}, {'name': 'Example name'}, {'address': 'GA'}]

【讨论】:

    【解决方案2】:

    如果不想使用iter(),可以使用list(),看起来和jpp的方案差不多

    res = [{k: list(v.values())[0]} for k,v in zip(K,L)]

    在此,您只需将 dict_values 对象转换为列表,并获取第一项,而不是获取迭代器并在其上调用 next。

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 2022-08-17
      • 2020-07-11
      • 2019-04-07
      • 2022-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多