[英]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.