gpt4 book ai didi

python - 将列表追加到字典中

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

我正在尝试读取由关键字分隔的文本文件。我正在使用字典来组织与每个部分相对应的信息。例如,对于文本文件:

*VERTICES
1 0 0
2 10 0
3 10 10
4 0 10
*EDGES
1 1 2
2 1 4
3 2 3
4 3 4

*EDGES*VERTICES部分。我的目标是制作一本类似的字典:

dict = {'*VERTICES': [[0,0], [0,10], [10,0], [10,10]], '*EDGES': [[1,2], [1,4], [2,3], [3,4]]}

这是我的代码:

with open('c:/geometry.txt','r') as inputfile:
xyz = []
dic = {}
key = None
for line in inputfile:
line = line.replace(',','')
linelist = ' '.join(line.split())
linelist = linelist.split(' ')
if(linelist[0][0]=='*'):
key = linelist[0]
dic[key] = []
else:
for i in range(0,len(linelist)):
string2float = float(linelist[i])
xyz.append(string2float)
dic[key].append(xyz)
del xyz[:]

print(dic)

这是当前的输出:

{'*VERTICES': [[], [], [], []], '*EDGES': [[], [], [], []]}

如您所见,空。我猜测错误位于 dic[key].append(xyz) 行。我做错了什么?我注意到,如果我尝试附加行列表(例如 dic[key].append(linelist)),代码可以正常工作,但我不会将变量从字符串转换为 float 。

有什么方法可以让它与 xyz( float )列表一起使用吗?谢谢

最佳答案

代码的最后几行没有执行您希望它们执行的操作:

        dic[key].append(xyz)
del xyz[:]

您将对 xyz 列表的引用附加到字典中的列表中,但您正在删除列表的内容。切片上的 del 语句会就地修改列表,因此存储在字典中的引用随后也会看到空列表结果。

事实上,字典中的所有空内部列表都是对同一个空 xyz 列表的引用。您可能想要做的是实际为 xyz 创建一个新列表,而不是删除其内容:

        dic[key].append(xyz)
xyz = []

或者,更好的是,使用列表理解来构建新列表及其内容,并完全删除 xyz 变量:

    else:
dic[key].append([float(num) for num in linelist])

请注意,这将包括内部字典中文件中的所有三个值。如果您只想要两个,您可能需要对 linelist 进行切片。

关于python - 将列表追加到字典中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35690970/

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