8

果物の合計の辞書があるとしましょう:

Fruits = {"apple":8, "banana":3, "lemon":5, "pineapple":2,}

そして、出力を

["pineapple"]

パイナップルの価値が最も低いからです。または私がこれを持っている場合:

Colour = {"blue":5, "green":2, "purple":6, "red":2}

出力は次のようになります。

["green","red"]

緑と赤の値はどちらも最小であるためです。

では、辞書の最小値を返すにはどうすればよいでしょうか。

4

8 に答える 8

4

最良の選択肢は、次の 2 つのパスを作成することです。

min_value = min(dict.values())
result = [key for key, value in dict.iteritems() if value == min_value]

明示的にループすることで、単一のパスを作成できます。

result = []
min_value = None
for key, value in dict.iteritems():
    if min_value is None or value < min_value:
        min_value = value
        result = []
    if value == min_value:
        result.append(key)

ただし、これは遅くなります(PyPyの場合を除く)

于 2013-04-19T07:22:24.723 に答える
0
colors = {"blue":5, "green":2, "purple":6, "red":2}# {"apple":8, "banana":3, "lemon":5, "pineapple":2,}

sorted_items = sorted(colors.items(), key=lambda t: t[1])
print (sorted_items)


min_val = sorted_items[0][1]

for t in sorted_items:
    if t[1] == min_val:
        print(t[0])
    else:
        break




--output:--
[('green', 2), ('red', 2), ('blue', 5), ('purple', 6)]

green
red
于 2013-04-19T07:24:53.133 に答える
0
import itertools
def getmin(dictionary):
    gen = ((j,i) for i,j in dictionary.iteritems())
    items = sorted(gen)
    minimum = items.pop(0)
    rest = itertools.takewhile(lambda item:item[0]==minimum[0],items)
    return [x[1] for x in itertools.chain([minimum],rest)]

この方法では、シュワルツ変換を使用して、ネイティブの並べ替えを利用します (キーは必要ありません)。ディクショナリのキーの値に基づいてアイテムを並べ替え、最小値を取得し、同じものをすべて取得します。

于 2013-04-19T07:28:29.477 に答える