-2

要件が変更されたため、質問を書き直さなければなりませんでした。

次のような辞書があります。

d = {'a': [4, 2], 'b': [3, 4], 'c': [4, 3], 'd': [4, 3], 'e': [4], 'f': [4], 'g': [4]}

辞書 d で最小の長さに関連付けられているキーと、最大値を持つキーを取得したいと考えています。

この場合、最小の長さ (このディクショナリ内のリストの最小の長さ) を持つキーが返されます。

'e, 'f', 'g'

そして、最大値(各リストの整数の合計)を持つものは返されるべきです

'b' 'c'

私が試してみました

min_value = min(dict.itervalues())
min_keys = [k for k in d if dict[k] == min_value]

しかし、それでは私が望む結果が得られません。

何か案は?

ありがとう!

4

1 に答える 1

7
def get_smallest_length(x):
    return [k for k in x.keys() if len(x.get(k))==min([len(n) for n in x.values()])]

def get_largest_sum(x):
    return [k for k in x.keys() if sum(x.get(k))==max([sum(n) for n in x.values()])]

x = {'a': [4, 2], 'c': [4, 3], 'b': [3, 4], 'e': [4], 'd': [4, 3], 'g': [4], 'f': [4]}

print get_smallest_length(x)
print get_largest_sum(x)

戻り値:

['e', 'g', 'f']
['c', 'b', 'd']
于 2012-07-30T22:33:36.973 に答える