我发现自己想要在迭代字典时保持最低/最大计数。
例如:
d = {
'Bob': 2000,
'Larry': 6000,
'Mary': 5
}
lowest_value = 1000000
list_of_keys = []
for key, value in d.items():
if value > 100:
list_of_keys.append(key)
if value < lowest_value:
lowest_value = value
不是将我的lowest_value
设置为肯定会大于第一个if value < lowest_value:
的数字,而是有更好的方法吗?
对于largest_count
我通常只能使用0或-1。
答案 0 :(得分:5)
min(d.values())
d = {
'Bob': 2000,
'Larry': 6000,
'Mary': 5
}
print(min(d.values()))
5
答案 1 :(得分:3)
您可以from math import inf
使用inf
而不是某个临时号码。 Ints在Python中与浮点数进行比较。
答案 2 :(得分:2)
Python的内置min
可以采用迭代。您也可以将> 100
过滤器放在genexpr中。 Python dicts也可以只返回一个可迭代的值,因为你不关心键。
lowest_value = min(value for value in d.values() if value > 100)
您可以单独获取列表中的键列表。
list_of_keys = [key for key, value in d.items() if value > 100]
这会迭代两次,但除非您的dict非常大,否则就行了(在这种情况下,请考虑使用pandas数据帧。)
为避免重复过滤步骤,您可以先使用dict comp。
d2 = {k: v for k, v in d.items() if v > 100}
lowest_value = min(d2.values())
list_of_keys = list(d2.keys())
答案 3 :(得分:-1)
单行。
ks, low = [f(i) for f, i in zip([list, min], zip(*((k, v) for k, v in d.items() if v>100)))]