我有两个具有价格值的json文件。这两个值中的每一个都在每个文件中。第二个对应于其他价格的平均值(在“ soldnumber”键中计数。我想要创建一个if语句,其中:如果售出数量> 3,则将“ avgactualeu”值添加到“ cote_actual”。其他:添加cote_lv值。
第一个数据库的样本:
[{
"objectID": 10000,
"cote_lv": 28000,
},
{
"objectID": 10001,
"cote_lv": 35000,
}...]
第二个示例:
[{
"objectID": 10002,
"avg_actual": 47640,
"sold_number": 2,
},
{
"objectID": 10001,
"sold_number": 5,
"unsold_number": 1,
"unsold_var": 17
}...]
我期望两个文件中每个objectID的输出都带有“ cote_actual”:值。
我的python代码不起作用:
import json
with open('./output/gmstatsencheresdemo.json', encoding='utf-8') as data_file2, open('./live_files/demo_db_live.json', encoding='utf-8') as data_file:
data2 = json.loads(data_file2.read())
data = json.loads(data_file.read())
for i in data:
cotelv = i.get('cote_lv')
i['cote_actual'] = {}
i['cote_actual'] = cotelv
for x in data2:
soldnumber = x.get('sold_number')
avgactual = x.get('avg_actual')
x['cote_actual'] = {}
x['cote_actual'] = avgactual
if soldnumber >= 3:
x['cote_actual'] = avgactual
elif soldnumber <= 3:
x['cote_actual'] = cotelv
print(x['cote_actual'])
编辑:正确显示avgactual
时我的输出正常,但cotelv
却不正确:它不会遍历所有值,而只显示一个(在此示例中为9000 )
输出:
9000
107792
9000
125700
9000
答案 0 :(得分:1)
我相信可以在How can I open multiple files using "with open" in Python?找到该答案。 但是,简而言之,您可以在同一行中打开两个文件,然后在“ with”缩进内执行操作。代码失败的原因是,在“ with”之后,如果不缩进,则这些操作将不考虑打开的文件,就像循环或常规的“ if”语句一样。因此,您可以同时打开它们并在正确的缩进下对其进行编辑,如下所示。
with open('./output/gmstatsencheresdemo.json', encoding='utf-8') as data_file2, open('./live_files/demo_db_live.json', encoding='utf-8') as data_file:
data2 = json.loads(data_file2.read())
data = json.loads(data_file.read())
#Now that they are opened, you can perform the actions through here
希望能回答您的问题!