繁体   English   中英

将字符串追加到字典列表中的特定值-Python

[英]Append string to specific values in a list of dictionary - Python

这是我的字典清单

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-作为前缀附加到key node_namevalue 我希望输出如下所示

[{'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'}] 

任何帮助深表感谢。

其他答案都创建了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']

动臂 -一条线...

您可以使用字典解压缩:

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'}]

这里使用mapdictionary 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'}

暂无
暂无

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

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