0

値が最小のキーをそのままにしておくと、 min()関数を使用できません。

OPがコメントから試したコードの移動: -

for i in key: 
    if dictionary[i]<dictionary[key]: 
        dictionary.pop(key) 
    elif dictionary[i]==dictionary[key]: 
        print (dictionary[i])

そして、他のコメントからのコード:

dictionary={'A': 3, 'B': -2, 'C': -1, 'D': -3} 
for key in dictionary: 
    print ("Keys and values>", key,end= '') 
    print (dictionary[key]) 
    print (dictionary) 
    for i in key: 
        if dictionary[i]<dictionary[key]: 
            dictionary.pop(key) 
        elif dictionary[i]==dictionary[key]: 
            print ("The minimum is",dictionary[i])
4

2 に答える 2

0

これを試すことができます。関数を使用anyして、各キーの値をそれ以外のすべての値と比較します。そして、anyその値より小さい値が見つかった場合、keyがポップされます。

>>> my_dict = {1: 2, 2: 3, 3: 4}
>>> for key, value in my_dict.items():
        if any(value > value1 for key1, value1 in my_dict.items() if key1 != key):
            my_dict.pop(key)


3
4
>>> my_dict
{1: 2}

any関数は、渡されたTrue値の少なくとも 1 つが である場合に戻ります。listTrue

例: -

any([0, 0, False, True])   # Will print True
any([0, 0, False, False])  # Will print False

アップデート : -

関数を使用したくない場合は、関数anyの for ループをany外側に移動して、そのループでのみテストを実行できます。

my_dict = {1: 2, 2: 3, 3: 4}

for key, value in my_dict.items():
    for key1, value1 in my_dict.items():

        if key1 != key and value > value1:
            my_dict.pop(key)

print my_dict
于 2012-11-22T07:52:29.477 に答える