在一组元组中找到最小值时,如何忽略负数?

2 python

我有一本字典:

d = {'a': (1, 2, 'a'), 'b': (1, 2, 'b'), 'c': (2, 4, 'c'), 'd': (1, 3, 'd'), 'e': (0, 1, 'e'), 'f': (0, 1, 'f'), 'g': (1, 3, 'g'), 'h': (0, 1, 'h'), 'j': (1, 2, 'j'), 'i': (0, 1, 'i'), 'k': (-1, 0, 'k')}
Run Code Online (Sandbox Code Playgroud)

我想找到哪一个是字典中所有值的最小值.但是,在最后一个键(k)上有一个-1.

如何在不删除键的情况下忽略该键/值?或者是删除的唯一方法:

'k': (-1, 0, 'k')
Run Code Online (Sandbox Code Playgroud)

然后使用min().

这是我的代码:

print(min(d.values()))
Run Code Online (Sandbox Code Playgroud)

当前输出:

(-1, 0, 'k')
Run Code Online (Sandbox Code Playgroud)

预期产量:

(0, 1, 'e')
Run Code Online (Sandbox Code Playgroud)

iz_*_*iz_ 8

您可以"过滤"以负片开头的元组,并在调用时不包括它们min:

d = {'a': (1, 2, 'a'), 'b': (1, 2, 'b'), 'c': (2, 4, 'c'), 'd': (1, 3, 'd'), 'e': (0, 1, 'e'), 'f': (0, 1, 'f'), 'g': (1, 3, 'g'), 'h': (0, 1, 'h'), 'j': (1, 2, 'j'), 'i': (0, 1, 'i'), 'k': (-1, 0, 'k')}

print(min(tup for tup in d.values() if tup[0] >= 0))
Run Code Online (Sandbox Code Playgroud)

输出:

(0, 1, 'e')
Run Code Online (Sandbox Code Playgroud)