簡體   English   中英

如何對具有相同鍵值對的字典列表求和?

[英]How to Sum a list of dictionaries with the same key value pair?

我有以下詞典列表:

[{Title: title1, Minutes: 657, Cat: Romance, Watched: Fully}, 
{Title: title2, Minutes: 128, Cat: Philosophy, Watched: Fully}, 
{Title: title3, Minutes: 76, Cat: Romance, Watched: Partially}]

我必須為其中的每只貓創建分鍾的觀看報告。 如果已完全監視,則添加所有分鍾;如果部分監視,則僅添加一半的分鍾;如果未監視,則不添加分鍾。

因此,示例輸出報告為:

Romance: 695
Philosophy: 128

我快到了,至少我是這么認為的。 這是我的輸出:

{'Romance': 38, 'Philosophy':128}

似乎只在“部分添加”中添加了“浪漫”,並且總數未更新。

在正確方向上的任何幫助都將非常有用。

這是我的代碼:

def get_count(self, movie_list):
        final = {}
        for movie in self.movie_list:
            get_category = movie['Cat']
            minutes = int(movie['Minutes'])
            total = 0

            for key in movie:
                if movie[key] == get_category:

                    if movie['Watched'] == 'Fully':
                        total += minutes

                    elif book['Watched'] == 'Partially':
                        half_of_movie = minutes//2
                        total += half_of_movie
                    elif book['Watched'] == 'Unwatched':
                        total += 0

            final[get_category] = total


        print(final)

編輯:經過進一步審查,我認為正在發生的事情是我正在重寫總數。

在這一行中: for key in movie:我認為有些錯誤。 也許只是遍歷所有鍵而沒有得到我想要的鍵。

一種可能的版本,使用dict.setdefault()doc ):

data = [{'Title': 'title1', 'Minutes': 657, 'Cat': 'Romance', 'Watched': 'Fully'},
{'Title': 'title2', 'Minutes': 128, 'Cat': 'Philosophy', 'Watched': 'Fully'},
{'Title': 'title3', 'Minutes': 76, 'Cat': 'Romance', 'Watched': 'Partially'}]

out = {}
for item in data:
    out.setdefault(item['Cat'], 0)
    out[item['Cat']] += item['Minutes'] if item['Watched'] == 'Fully' else item['Minutes'] // 2

print(out)

打印:

{'Romance': 695, 'Philosophy': 128}

嘗試這個!

def get_count(self, movie_list):
        final = {}
        for movie in self.movie_list:
            cat = movie['Cat']
            final.setdefault(cat, 0)
            minutes = int(movie['Minutes'])

            if movie['Watched'] == 'Fully':
                final[cat] += minutes
            elif movie['Watched'] == 'Partially':
                final[cat] += minutes // 2

        print(final)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM