gpt4 book ai didi

python - 在 Python 3 中构建嵌套字典时出现问题

转载 作者:太空宇宙 更新时间:2023-11-03 16:23:56 25 4
gpt4 key购买 nike

我想基于文本文件构建一个嵌套字典。例如。 (文本.txt)

...
hostA hostA.testing.com 192.168.1.101
hostB hostB.testing.com 192.168.1.102
...

理想情况下,我想要获得以下嵌套字典

...
{'hostA': {'FQHN': 'hostA.testing.com', 'IP': '192.168.1.101'}, 'hostB': {'FQHN': 'hostB.testing.com', 'IP': '192.168.1.102'}}
...

所以我编写了以下Python代码:

myinnerdict={}
myouterdict={}

def main():
my_fh = open('text.txt', 'r')
for line in my_fh:
newline = line.strip().split() # get ride of the '\n' and make it a inner list .
#print(newline)
myinnerdict['FQHN']=newline[1]
myinnerdict['IP']=newline[2]
#print(myinnerdict)
#print(newline[0])
myouterdict[newline[0]]=myinnerdict
print(myouterdict)

if __name__ == "__main__":
main()
...

但是,超出了我的理解,当我运行它时,我得到了这个结果:

...
{'hostA': {'FQHN': 'hostB.testing.com', 'IP': '192.168.1.102'}, 'hostB': {'FQHN': 'hostB.testing.com', 'IP': '192.168.1.102'}}
...

这不是我想要的,我不知道我错过了什么,请帮忙。

最佳答案

发生这种情况是因为您为 innerdict 重用了相同的 dict 对象。您需要在循环中创建一个新的 dict 对象:

myouterdict={}

def main():
my_fh = open('text.txt', 'r')
for line in my_fh:
myinnerdict={}
newline = line.strip().split() # get ride of the '\n' and make it a inner list .
#print(newline)
myinnerdict['FQHN']=newline[1]
myinnerdict['IP']=newline[2]
#print(myinnerdict)
#print(newline[0])
myouterdict[newline[0]]=myinnerdict
print(myouterdict)

if __name__ == "__main__":
main()

关于python - 在 Python 3 中构建嵌套字典时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38166756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com