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、中兴、比亚迪等的功能)并在其中执行具体流程。因此,键名将区分要执行的函数和进程。请注意并感谢,这也是一个很好的解决方案。。。我需要测试给出的解决方案。感谢您的回复和帮助,谢谢,这也是一个很好的解决方案。。。我需要测试给出的解决方案。谢谢你的回复和帮助