2017-01-17 19 views
2

だから私私にできることで最大の辞書の値を取得するfoundPython:辞書の特定のグループの最大値を取得する方法は?

dict[max(dict, key=dict.get)] 

私の辞書は次のようになります。 {article_title:異なる記事がそれにリンクしてどのように多くの数}例

: { '10世紀':2 'ポーランド' 0 'メキシコ':11}

群から()Iは、例えば、タプル(article_title、文書オブジェクト)のリストを得る: [(メキシコ、メキシコ())、(ポーランド、ポーランド())]

このグループでは、article_titleの最大値は何ですか。

しかし、特定のキーグループの辞書値はどのようにして見つけられますか? 私は本当に迷ってしまいました...私は意味がありません。私が書いたと思う:

dict = my dictionary 
group_of_keys = group() # returns specific list of tuples. The first term of the tuple is my key, the second is irrelevant 
max_value = dict[max(dict[group_of_keys], key=dict.get)] 

ヘルプしてください!

+4

あなたは 'group()'の定義と、辞書の例と期待される出力を提供できますか? – Tagc

+1

'dict = my dictionary'は' dict'キーワードをシャドウします。あるいは、少なくとも空白を含んでいないので、 'SyntaxError'を発生させるでしょう。 –

+0

辞書とグループ()好き。 – Bun

答えて

3

group()は​​を返します。もしそうなら、あなたはそれらのキーの値を取得し、最大値を見つけることができます。

max(map(dict.get, groups())) 

EDIT:あなたはgroup()(article_title, article_object)のタプルを返し、私たちは何ができるかのキーがdict.get(title) for title, article in group()としてこれらのキーの値を取得し、それらの値のうちの最大値を見つけることであるとして、あなたはarticle_titleを望むことが明らかになったよう。だから、あなたの質問への答えは次のとおりです。

max(dict.get(title) for title, article in group()) 

小型ノート:dictそれはPythonの予約語dictをシャドウするので、変数のための良い名前ではありません。 GROUP BY

1

私はあなたがあなたの鍵だけで明確にするため

my_dict = {} # your dictionary 
group = get_group(my_dict) 
# since your group returns tuples of (key, something else) 
group = [ i[0] for i in group ] 
max_group_key = max(group, my_dict.get) 
max_group_value = my_dict[max_group_key] 

のサブセットを意味すると仮定し、私は温度に月の辞書を取っています。 max_keyは最高の気温だった月を教えてくれるでしょう。 max_group_keyは最高の気温を持つグループ内の月を教えてくれます。

temperature = { 
    "jan": 17, "feb": 18, "mar": 19, "apr": 24, "may": 26, 
    "jun": 25, "jul": 22, "aug": 21, "sep": 20, "oct": 20, 
    "nov": 18, "dec": 15 
} 

# hottest month 
max_key = max(temperature, key=temperature.get) 
max_val = temperature[max_key] 

print("hottest month: {0}, temperature: {1}".format(max_key, max_val)) 

# only for a few months 
group = [ ("jan", "foo"), ("feb", "bar"), ("jun", "baz") ] 
group = [ i[0] for i in group ] 
max_group_key = max(group, key=temperature.get) 
max_group_val = temperature[max_group_key] 

print("hottest month: {0}, temperature: {1}".format(max_group_key, max_group_val)) 
関連する問題