1

値に基づいて上位10個の辞書キーを見つける必要があります。値は2つのフィールドのタプルです。

{ Key : (value1, value2) }

したがって、最初に、上位10個のvalue1に基づいてキーのリストを検索する必要があり、次に、上位10個のvalue2に基づいてキーのリストを検索する必要があります。

次に、list1とlist2のセットを見つけて、リストを返す必要があります...

どうすればこれをpythonicの方法で行うことができますか...

または、このようなことを行うために、完全なロジックを作成する必要があります...

私は1つの解決策を書きました:辞書がキーと値のペアである場合.....

dict(sorted(dict_mapping.iteritems(), key=lambda dict_mapping:dict_mapping[1]) [0:10]).keys()

助けてください..

4

3 に答える 3

1

辞書の値がタプルの場合、Pythonのsorted()は辞書式の並べ替えを行います。つまり、value1はソートに使用され、value2はタイブレークに使用されます。

sorted(a.keys(), key=a.get)[:10]

これにより、辞書のキーではなく値でソートされた上位10個のキーが生成されます。

于 2012-04-24T14:31:52.713 に答える
1
sorted(data.keys(), key=lambda x: data[x][1])[:10]
于 2012-04-24T14:15:54.827 に答える
0
data = {'key1': ('value1', 'value2'), 'key2': ('value3', 'value4')}

tmp = [sorted(data.keys(), key=lambda x: data[x][i])[:10] for i in (0, 1)]
result = set(tmp[0]+tmp[1])
于 2012-04-24T14:59:12.057 に答える