这是我的字典清单
pool = [{'node_name': '198', 'port': '22'}, {'node_name': '199','port':'22'},
{'node_name': '200', 'port': '22'}, {'node_name': '201', 'port': '22'},
{'node_name': '202', 'port': '22'}, {'node_name': '203', 'port': '22'},
{'node_name': '204', 'port':'22'}, {'node_name': '205', 'port': '22'}]
我想将node-
作为value
key
的{{1}}的前缀。我希望输出如下所示
node_name
非常感谢您的帮助。
答案 0 :(得分:2)
其他答案都创建了 n 个新字典,并创建了一个新列表来保存它们。
将所有这些都放在一行中似乎很浪费。
for d in x:
if 'node_name' in d:
d['node_name'] = 'node-'+d['node_name']
仅修改一个字典条目,而不创建任何新对象(替换字符串除外)。
如果您知道每本词典中的密钥,
for d in x: d['node_name'] = 'node-'+d['node_name']
景气-一行...
答案 1 :(得分:1)
您可以使用字典解压缩:
pool = [{'node_name': '198', 'port': '22'}, {'node_name': '199','port':'22'}, {'node_name': '200', 'port': '22'}, {'node_name': '201', 'port': '22'}, {'node_name': '202', 'port': '22'}, {'node_name': '203', 'port': '22'}, {'node_name': '204', 'port':'22'}, {'node_name': '205', 'port': '22'}]
new_pool = [{**i, 'node_name':f'node-{i["node_name"]}'} for i in pool]
输出:
[{'node_name': 'node-198', 'port': '22'}, {'node_name': 'node-199', 'port': '22'}, {'node_name': 'node-200', 'port': '22'}, {'node_name': 'node-201', 'port': '22'}, {'node_name': 'node-202', 'port': '22'}, {'node_name': 'node-203', 'port': '22'}, {'node_name': 'node-204', 'port': '22'}, {'node_name': 'node-205', 'port': '22'}]
答案 2 :(得分:0)
这里使用map
和dictionary unpacking
,也可以在python 3.5中使用:
>>> new_pool = list(map(lambda x: {**x,'node_name':'node-{}'.format(x['node_name'])},pool))
>>> print(*new_pool,sep='\n')
{'node_name': 'node-198', 'port': '22'}
{'node_name': 'node-199', 'port': '22'}
{'node_name': 'node-200', 'port': '22'}
{'node_name': 'node-201', 'port': '22'}
{'node_name': 'node-202', 'port': '22'}
{'node_name': 'node-203', 'port': '22'}
{'node_name': 'node-204', 'port': '22'}
{'node_name': 'node-205', 'port': '22'}