2 回答

TA贡献1848条经验 获得超2个赞
在字典中,键必须是唯一的,当你这样做时:
mydict[name] = ip.strip()
通过执行以下操作,您可以覆盖值,而不是为键提供单个值,您可以存储值列表:
mydict = {}
with open('devices.txt', 'r') as file:
for line in file:
name, ip = line.split()
if name not in mydict:
mydict[name] = []
mydict[name].append(ip.strip())
print(mydict)
输出
{'asy1': ['10.20.0.1'], 'byt': ['192.1.10.100', '192.1.10.101', '192.1.10.102'], 'hps': ['10.30.1.50', '10.30.1.53', '10.30.1.54', '10.30.1.55', '10.30.1.56'], 'zte': ['10.100.1.1', '10.100.1.2']}
第二种选择是使用setdefault代替:
mydict.setdefault(name, []).append(ip.strip())
第三种选择是使用defaultdict。如果值是唯一的,请考虑使用set。

TA贡献1863条经验 获得超2个赞
其中许多名称是相同的,但是 adict
对于给定的键只能有一个值 - 如果您尝试使用 key 将 IP 添加到字典中hps
,但其中已经有一个,它将被覆盖。也许使用 alist
代替?
添加回答
举报