如何使用python将dictionary值替换为其扩展?即替换";Eth";用";以太网";?
{'Po1': ['Eth1/2', 'Eth1/3', 'Eth2/3', 'Eth3/3'], 'Po2': ['Eth2/2', 'Eth2/5'], 'Po201': ['Eth1/1']}
输出:
{'Po1': ['Ethernet1/2', 'Ethernet1/3', 'Ethernet2/3', 'Ethernet3/3'], 'Po2': ['Ethernet2/2', 'Ethernet2/5'], 'Po201': ['Ethernet1/1']}
d = {'Po1': ['Eth1/2', 'Eth1/3', 'Eth2/3', 'Eth3/3'], 'Po2': ['Eth2/2', 'Eth2/5'], 'Po201': ['Eth1/1']}
out = {}
for key, value in d.items():
l = []
for string in value:
l.append(string.replace('Eth', 'Ethernet'))
out[key] = l
print(out)
# the above can be re-written using comprehensions
out = {}
for key, value in d.items():
out[key] = [string.replace('Eth', 'Ethernet') for string in value]
print(out)
# the above can be re-written using nested comprehensions
out = {k: [s.replace('Eth', 'Ethernet') for s in v] for k, v in d.items()}
print(out)
打印:
{'Po1': ['Ethernet1/2', 'Ethernet1/3', 'Ethernet2/3', 'Ethernet3/3'], 'Po2': ['Ethernet2/2', 'Ethernet2/5'], 'Po201': ['Ethernet1/1']}
{'Po1': ['Ethernet1/2', 'Ethernet1/3', 'Ethernet2/3', 'Ethernet3/3'], 'Po2': ['Ethernet2/2', 'Ethernet2/5'], 'Po201': ['Ethernet1/1']}
{'Po1': ['Ethernet1/2', 'Ethernet1/3', 'Ethernet2/3', 'Ethernet3/3'], 'Po2': ['Ethernet2/2', 'Ethernet2/5'], 'Po201': ['Ethernet1/1']}
可以在列表中就地修改字符串。遍历字典值,然后遍历列表,然后在每个列表位置重新分配字符串。如果您不熟悉enumerate
,它会返回可迭代的每个元素的索引和值。
>>> d = {'Po1': ['Eth1/2', 'Eth1/3', 'Eth2/3', 'Eth3/3'], 'Po2': ['Eth2/2', 'Eth2/5'], 'Po201': ['Eth1/1']}
>>> for v in d.values():
... for i,s in enumerate(v):
... v[i] = s.replace('Eth','Ethernet')
...
>>> d
{'Po1': ['Ethernet1/2', 'Ethernet1/3', 'Ethernet2/3', 'Ethernet3/3'], 'Po2': ['Ethernet2/2', 'Ethernet2/5'], 'Po201': ['Ethernet1/1']}