Python 将文本转换为Dict[文本行中的重复键]
我有如下示例文本文件Python 将文本转换为Dict[文本行中的重复键],python,dictionary,Python,Dictionary,我有如下示例文本文件 asy1 10.20.0.1 byt 192.1.10.100 byt 192.1.10.101 byt 192.1.10.102 hps 10.30.1.50 hps 10.30.1.53 hps 10.30.1.54 hps 10.30.1.55 hps 10.30.1.56 zte 10.100.1.1 zte 10.100.1.2 当我运行下面的脚本时 mydict = {} with open('devices.txt', 'r') as file: fo
asy1 10.20.0.1
byt 192.1.10.100
byt 192.1.10.101
byt 192.1.10.102
hps 10.30.1.50
hps 10.30.1.53
hps 10.30.1.54
hps 10.30.1.55
hps 10.30.1.56
zte 10.100.1.1
zte 10.100.1.2
当我运行下面的脚本时
mydict = {}
with open('devices.txt', 'r') as file:
for line in file:
name, ip = line.split()
mydict[name] = ip.strip()
print(mydict)
它不会按照文本文件返回所有行/内容
{'hps': '10.30.1.56', 'zte': '10.100.1.2', 'byt': '192.1.10.102', 'asy1': '10.20.0.1'}
我错过了一些东西…请告诉我。感谢这些名称中有许多是相同的,但是一个
dict
对于一个给定的键只能有一个值-如果您尝试使用键hps
将IP添加到字典中,但其中已经有一个,它将被覆盖。也许可以使用列表
?这些名称中有许多相同,但是dict
对于给定的键只能有一个值-如果您尝试使用键hps
将IP添加到字典中,但其中已经有一个,它将被覆盖。可能使用列表来代替?在字典中,当您执行以下操作时,键必须是唯一的:
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']}
第二种选择是使用:
第三种选择是使用一个。如果值是唯一的,考虑在字典中使用.< /p>< p>键必须是UNIQUE,当您这样做时:
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']}
第二种选择是使用:
第三种选择是使用一个。如果值是唯一的,考虑使用.< /p> @丹尼尔梅舍沃,字典可以有多个键。它们只需要有不同的散列值。@DanielMesejo字典可以有多个键。它们必须有不同的散列值。我的错误…谢谢。。。。我计划创建每个关键组的功能(hps、中兴、比亚迪等的功能)并在其中执行具体流程。因此,键名将区分要执行的函数和进程。我的错误…谢谢。。。。我计划创建每个关键组的功能(hps、中兴、比亚迪等的功能)并在其中执行具体流程。因此,键名将区分要执行的函数和进程。请注意并感谢,这也是一个很好的解决方案。。。我需要测试给出的解决方案。感谢您的回复和帮助,谢谢,这也是一个很好的解决方案。。。我需要测试给出的解决方案。谢谢你的回复和帮助