用列表中的值替换字典键

时间:2018-07-10 10:10:18

标签: python python-3.x list dictionary

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

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

寻找最Python方式替换键字典键。我尝试使用for循环和列表索引,但是很丑陋。例外结果:

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

2 个答案:

答案 0 :(得分: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'}]

答案 1 :(得分:1)

如果您不想使用iter(),则可以使用list(),它看起来与jpp的解决方案几乎一样

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

在这种情况下,您只需将dict_values对象转换为列表,然后获取第一项,而不是获取迭代器并对其进行下一步调用。