按名称键组合词典列表中的词典

我有一个看起来像这样的字典列表


list = [

          {Name: Fred, Points: 1, Date: 1-20-2020},

          {Name: Fred, Points: 3, Date: 1-15-2020},

          {Name: Fred, Points: 5, Date: 1-13-2020},

       ]

我怎样才能按名称将它们组合起来呢?


list = [{

           Name: Fred, Scores: [{

                                   Points: 1, Date: 1-20-2020,

                                   Points: 3, Date: 1-15-2020,

                                   Points: 5, Date: 1-13-2020

                               ]

           ]

          

我试图创建一个名称列表,然后将其余值映射回名称,但这没有按预期工作。


names = []

for name in list:

    names.append(

        {

            'Name': name['Name']

        })


for name in list:

    for name in names:

        if name['Name'] == name['Name']:

            name['Scores'] = [

                {

                    'Date': name['Date'],

                    'FPTS': name['Points']

                }]


繁星coding
浏览 84回答 1
1回答

白板的微信

第一个循环应该创建一个空Scores列表。然后第二个列表可以附加到适当的列表。您需要防止多次将相同的名称添加到新列表中。在我下面的代码中,我使用 aset来记住已经添加了哪些名称。另外,不要name在第二个循环的嵌套循环中使用相同的变量。names = []names_appended = set()for name in list:    if name['Name'] not in names_appended:        names.append(            {                'Name': name['Name'],                'Scores': []            })        names_appended.add(name['Name'])for name in list:    for name2 in names:        if name['Name'] == name2['Name']:            name2['Scores'].append({'Date': name['Date'], 'Points': name['Points']})如果您的新结构是使用名称作为键的字典,而不是字典列表,那会容易得多。那么你就不需要嵌套循环了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python