Python将dictionary值替换为其扩展名



如何使用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']}

最新更新