def list(file_name):
list = []
with open(str(file_name)+".txt") as file:
for line in file.readlines():
s = line.split("|")
list.append({key1:s[0], key2:s[1],...})
return list
现在我遇到的问题是:我有一些字典列表可以从不同的文件创建。并非所有文件都需要相同数量的密钥。问题是如何使这些键在不同情况下变化。如果我定义这样的函数
def dictionary(file_name):
if file_name == "something":
dictionary = {key1:s[0],...}
问题是没有为此函数定义s(应该拆分)。如果你们中的任何人有任何想法如何解决这个问题,请帮忙。提前致谢:D
答案 0 :(得分:1)
那是什么词典
keys = {
"file1.txt":["KEYS1","Keys2","Etc"]
}
for i,key in enumerate(keys.get(fname,[])):
dictionary[key] = s[i]
或者你可以做类似
的事情all_keys = ["key1","key2","etc","keyn"]
for line in file:
data = dict(zip(all_keys,line.split("|")))
如果他们总是拥有相同的密钥,只有不同数量的密钥
答案 1 :(得分:1)
如果每个文件的键列表不同,最好是函数的参数,就像文件名一样。而BTW,使用与内置标识符(例如list
)冲突的名称是一种可怕的做法,因此,修复它:
def makelist(filename, keys):
result = []
with open('%s.txt' % filename) as f:
for line in f:
result.append(dict(zip(keys, line.split('|'))))
return result
或者,如果一个人更喜欢简明扼要的清晰度,
def makelist(filename, keys):
with open('%s.txt' % filename) as f:
return [dict(zip(keys, line.split('|'))) for line in f]