我有一个包含3个值的列表。我希望我的循环能够遍历每个列表值并在dict.get()中使用,相反,它只是为列表中的每个值输出相同的值。我知道这是在我的for循环内发生的,但我不想使用列表中的每个项目相同的值(使用a.json的当前值和先前值用于b.json和c.json)这些项目使用它们自己的相应值。我添加了如下代码:
def readFileIntoDict(pathOfFile):
fo = open(pathOfFile, "rw+")
linesOfFiles = fo.readlines()
dataInFile = {}
for line in linesOfFiles:
jsonD = json.loads(line)
dataInFile[jsonD['File Name']] = jsonD['File Size']
return dataInFile
jsonDataprevFile = readFileIntoDict('dates/2018-01-01.json')
jsonDatacurrFile = readFileIntoDict('dates/2018-01-02.json')
list1 = jsonDataprevFile.keys()
list2 = jsonDatacurrFile.keys()
names_in_both = set(list1).intersection(list2)
# At this point it loops through 3 times
file_names = ['a.json', 'b.json', 'c.json']
for fileNames in file_names:
if fileNames in names_in_both:
# Get the key a.json from file_name
print(compare(jsonDataprevFile.get(file_names[0]), jsonDatacurrFile.get(file_names[0])))
答案 0 :(得分:1)
如果我做对了,并假设compare()
在代码的其他位置定义了
for file_name in file_names:
if file_name in names_in_both:
# Get the key file_name from both json objects
print(compare(jsonDataprevFile.get(file_name), jsonDatacurrFile.get(file_name)))
此外,请注意,您的readFileIntoDict()
函数看起来有些奇怪-如果输入的json文件确实是有效的json,则不应逐行读取/解析。您可以上传示例输入json文件吗?
答案 1 :(得分:1)
您要在file_names
上进行迭代,但不会更改该值:
只需将file_names[0]
更改为file_name
for file_name in file_names:
if file_name in names_in_both:
# Get the key a.json from file_name
print(compare(jsonDataprevFile.get(file_name), jsonDatacurrFile.get(file_name)))