gpt4 book ai didi

python - 从文件和 os.listdir python 构建字典

转载 作者:行者123 更新时间:2023-12-01 06:05:47 25 4
gpt4 key购买 nike

我正在使用 os.listdir 和一个文件来创建字典。我分别从它们那里获取键和值。

os.listdir 给我:

EVENT3180
EVENT2894
EVENT2996

从文件中我得到:

3.1253   -32.8828   138.2464
11.2087 -33.2371 138.3230
15.8663 -33.1403 138.3051

主要问题是我的最终字典具有不同的键,但始终具有相同的值,这不是我想要的。我想要得到的是:

{'EVENT3180': 3.1253   -32.8828   138.2464, 'EVENT2894': 11.2087   -33.2371   138.3230, 'EVENT2996': 15.8663   -33.1403   138.3051}

所以我认为我的代码是在键上循环,而不是在值上循环。无论如何,到目前为止我的代码:

def reloc_event_coords_dic ():
event_list = os.listdir('/Users/working_directory/observed_arrivals_loc3d')
adict = {}
os.chdir(path) # declared somewhere else
with open ('reloc_coord_complete', 'r') as coords_file:
for line in coords_file:
line = line.strip() #Gives me the values
for name in event_list: # name is the key
entry = adict.get (name, [])
entry.append (line)
adict [name] = entry
return adict

感谢您的阅读!

最佳答案

您需要同时循环输入文件的文件名和行。将嵌套循环替换为

for name, line in zip(event_list, coords_file.readlines()):
adict.setdefault(name, []).append(line.strip())

我冒昧地将循环体压缩成一行。

如果要处理的数据量非常大,则将 zip 替换为其惰性表弟 izip:

from itertools import izip

for name, line in izip(event_list, coords_file):
# as before

顺便说一句,在函数中间执行 chdir 只是为了获取单个文件,这是一种代码味道。您可以使用 open(os.path.join(path, 'reloc_coord_complete')) 轻松打开正确的文件。

关于python - 从文件和 os.listdir python 构建字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8031221/

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