2017-04-13 15 views
0

私は、次のサンプルコードしている:パイソン - 昇順のリストに注文辞書

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'] 

そして、私はかなり知らない:

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 

そして、何の機能から印刷されますですどうしたの。私が取得する必要があります。

>>>recommended_articles(articles, keywords) 
['article2.txt', 'article3.txt', 'article1.txt'] 

しかし、私の機能は一貫して関係なく、私は、キーワードを変更する場合は、['article1.txt', 'article3.txt', 'article2.txt']を返しません。

助けていただければ幸いです!

+0

@algerbrexありがとう。 'count'は記事[outerkey]内の辞書だったでしょう。外側のキーをループするようにコードを編集しましたが、 'count'が' keywords'で発生することを確認したにもかかわらず、まだ問題にぶつかっています。 – Nikitau

+0

さて、あなたのコードをもう一度見て、私が見つけたいくつかのエラーがさらにあります。 –

答えて

0

私は、これは何が必要だと思う:

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)) 
0

ちょうど情報:記事のdictの辞書の形です。だからあなたは常に順序付けられていない出力を得るでしょう。記事の注文した辞書を使用しようとする

関連する問題