Python 确定最低计数的最简单的方法

Python 确定最低计数的最简单的方法,python,iteration,Python,Iteration,我发现自己在遍历字典时希望保持最小/最大计数 例如: 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:

我发现自己在遍历字典时希望保持最小/最大计数

例如:

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
d={
“鲍勃”:2000年,
拉里:6000,
“玛丽”:5
}
最低值=1000000
密钥列表=[]
对于键,d.items()中的值:
如果值>100:
列出\u个键。追加(键)
如果值<最低值:
最低值=最小值
如果值<最低值:,有没有更好的方法将我的
最低值设置为肯定大于第一个
的数字


对于
最大计数
我通常可以使用0或-1

您可以从math导入inf
,并使用
inf
而不是一些特殊的数字。在Python中,int与float的比较非常好。

您可以使用或喜欢:

代码: 测试代码: 结果:
Python的内置
min
可以使用iterable。您还可以将
>100
过滤器放入genexpr中。Python dicts还可以只返回一个iterable值,因为您不关心键

lowest_value = min(value for value in d.values() if value > 100)
您可以在列表comp中单独获取密钥列表

list_of_keys = [key for key, value in d.items() if value > 100]

这两次迭代,但没关系,除非您的DICT非常大(在这种情况下,考虑使用大数据DATAFRAMs)。 为了避免重复过滤步骤,可以先使用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())
一艘邮轮

ks, low = [f(i) for f, i in zip([list, min], zip(*((k, v) for k, v in d.items() if v>100)))]

@Stephernauch我的意思是最初设置
最低值
。您没有值,或者您的意思是
max(list(d.values())
?我想这可能行得通还有
float('inf')
你也可以用
list\u of_key=[…]来避免过滤步骤;最低值=d[min(键列表,键=d.get)]
。顺便说一句:你的一行是最慢的方法。甚至是
最低值=min(map(d.get,list\u键))
list_of_keys = [key for key, value in d.items() if value > 100]
d2 = {k: v for k, v in d.items() if v > 100}
lowest_value = min(d2.values())
list_of_keys = list(d2.keys())
ks, low = [f(i) for f, i in zip([list, min], zip(*((k, v) for k, v in d.items() if v>100)))]