【发布时间】:2019-12-23 12:51:11
【问题描述】:
我正在尝试从旧字典创建一个新字典,以仅获取我将来在 df 中新增的值。但是我创建的函数总是返回相同的键+值。
def load_data():
with open('./data/awards.json', 'r') as file:
json_file = json.load(file)
events_dict = {}
for data_raw in json_file:
events_dict['event'] = (data_raw['Event'])
#form categories_list
categories_list = []
for all_data in data_raw['Data']:
for awards_data in all_data['nomineesWidgetModel']['eventEditionSummary']['awards']:
#check if it's a premium category
if categories_data['isPremiumCategory'] == True:
for categories_data in awards_data['categories']:
categories = {}
categories['category_name'] = (categories_data['categoryName'])
#form nomination_list
nomination_list = []
for nominations_data in categories_data['nominations']:
primary_nominees = nominations_data['primaryNominees']
if len(primary_nominees)>0:
nominee1 = primary_nominees[0]['name']
secondary_nominees = nominations_data['secondaryNominees']
if len(secondary_nominees)>0:
nominee2 = secondary_nominees[0]['name']
nomination_list.append([nominee1, nominee2, nominations_data['isWinner']])
categories['nominations'] = nomination_list
categories_list.append(categories)
events_dict['categories'] = categories_list
return events_dict
我的目的是获得每个奖项的类别、提名以及是否获奖。我现在得到的是同一个事件的 11 倍。
我尝试更改缩进,先将 dict 附加到列表中,但没有任何帮助...我确信这是非常基本的东西,但我是 Python 新手,没有看到我的错误。
有可能做这样的事情吗?
【问题讨论】:
-
您可以添加原始数据的 sn-p 吗?
-
events_dict['event'] = (data_raw['Event'])将在每次迭代时覆盖。您还需要在这里切换一些逻辑:if categories_data['isPremiumCategory'] == True:应该在for categories_data in awards_data['categories']:之后
标签: python json loops dictionary