![](/img/trans.png)
[英]Sorting list of values in the returned dictionary in ascending order-Python
[英]Python - Order dictionary into a list of ascending order
我有以下示例代碼:
articles = {'article1.txt': {'harry': 3, 'hermione': 2, 'ron': 1},
'article2.txt': {'dumbledore': 5, 'hermione': 3},
'article3.txt': {'harry': 5, 'hermione': 5}}
keywords = ['hermione', 'dumbledore']
def recommend_articles(articles, keywords):
def max_count(key):
result = 0
for names in articles.keys():
for name, count in articles[names].items():
if name in keywords:
result += count
print name, count, result
return result
article_list = sorted(articles.keys(), key=max_count, reverse = True)
print article_list
從該函數打印出來的是:
hermione 2 2
hermione 5 7
dumbledore 5 12
hermione 3 15
hermione 2 2
hermione 5 7
dumbledore 5 12
hermione 3 15
hermione 2 2
hermione 5 7
dumbledore 5 12
hermione 3 15
['article1.txt', 'article3.txt', 'article2.txt']
我不太清楚發生了什么。 我應該得到:
>>>recommended_articles(articles, keywords)
['article2.txt', 'article3.txt', 'article1.txt']
但是我的函數始終返回['article1.txt', 'article3.txt', 'article2.txt']
,無論我是否更改關鍵字。
幫助將不勝感激!
我認為這是您需要的:
articles = {'article1.txt': {'harry': 3, 'hermione': 2, 'ron': 1},
'article2.txt': {'dumbledore': 5, 'hermione': 3},
'article3.txt': {'harry': 5, 'hermione': 5}}
keywords = ['hermione', 'dumbledore']
def recommend_articles(articles, keywords):
def max_count(key):
result = 0
for name in articles[key].keys():
if name in keywords:
result = result + articles[key][name]
return result
article_list = sorted(articles.keys(), key=max_count, reverse = True)
print article_list
print(recommend_articles(articles, keywords))
只是一個信息:文章是dict形式的dict。 因此,您將始終獲得無序的輸出。 嘗試對文章使用排序的dict
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.