首页 > 解决方案 > 遍历字典中的字典列表

问题描述

我对 python 非常陌生,我在为包含字典列表的字典创建循环时遇到了麻烦。我会很感激帮助!

mylist = {'ID_01': [{'blood type': 'A',
                     'Age': '15',
                     'eye colour': 'Green',
                     'Location': 'Toronto',
                     'Initial Score': '30',
                     'Final Score': '50'},
                    {'blood type': 'B',
                     'Age': '20',
                     'eye colour': 'Green',
                     'Location': 'Tokyo',
                     'Initial Score': '50',
                     'Final Score': '80'}],
          'ID_02': [{'blood type': 'C',
                     'Age': '10',
                     'eye colour': 'Blue',
                     'Location': 'Toronto',
                     'Initial Score': '90',
                     'Final Score': '100'},
                    {'blood type': 'D',
                     'Age': '13',
                     'eye colour': 'Blue',
                     'Location': 'Tokyo',
                     'Initial Score': '60',
                     'Final Score': '90'}]}


new_dictionary = {}

如果位置是多伦多,添加ID,如果位置是东京,检查东京的初始分数(50)是否小于多伦多的初始分数(30)以及东京的最终分数(80)是否大于多伦多的初始分数( 30)但小于多伦多最终得分,如果是,则将与该ID关联的所有数据添加到new_dictionary。

ID将数据添加到new_dictionaryif 的循环:
initial score of tokyo < initial score of toronto
AND
initial score of toronto < final score of tokyo < final score of toronto

谢谢你!

标签: pythondictionary

解决方案


这是您可以执行的操作:

mylist = {'ID_01': [{'blood type': 'A',
                     'Age': '15',
                     'eye colour': 'Green',
                     'Location': 'Toronto',
                     'Initial Score': '30',
                     'Final Score': '50'}],
          'ID_02': [{'blood type': 'B',
                     'Age': '10',
                     'eye colour': 'Blue',
                     'Location': 'Tokyo',
                     'Initial Score': '50',
                     'Final Score': '80'}]}

initial_score_of_tokyo = [mylist[ID][0]["Initial Score"] for ID in mylist.keys() if mylist[ID][0]['Location'] == 'Tokyo'][0]
initial_score_of_toronto = [mylist[ID][0]["Initial Score"] for ID in mylist.keys() if mylist[ID][0]['Location'] == 'Toronto'][0]
final_score_of_tokyo = [mylist[ID][0]["Final Score"] for ID in mylist.keys() if mylist[ID][0]['Location'] == 'Tokyo'][0]
final_score_of_toronto = [mylist[ID][0]["Final Score"] for ID in mylist.keys() if mylist[ID][0]['Location'] == 'Toronto'][0]


new_dictionary = {}

for ID in mylist.keys():
    if mylist[ID][0]['Location'] == 'Toronto' or (initial_score_of_tokyo < initial_score_of_toronto and initial_score_of_toronto < final_score_of_tokyo < final_score_of_toronto):
          new_dictionary.update({ID:mylist[ID]})

print(new_dictionary)

输出:

{'ID_01': [{'blood type': 'A',
            'Age': '15',
            'eye colour': 'Green',
            'Location': 'Toronto',
            'Initial Score': '30',
            'Final Score': '50'}]}

推荐阅读