【发布时间】:2018-09-23 16:50:48
【问题描述】:
我对一件事感到好奇:
我有一个字典,例如,以汽车为键,以速度为值。现在,我想找到具有最低值的键。
car_dict = {'mercedes': 200, 'fiat': 100, 'porsche': 300, 'rocketcar': 600}
我知道这段代码适用于 O(1)
car_value = list(car_dict.values())
car_key = list(car_dict.keys())
min_stats = min(car_value)
print(car_key[car_value.index(min_stats)])
这个也是 O(n)
keys = []
values = []
for name, value in car_dict.items():
keys.append(name)
values.append(value)
min_value = min(values)
print(keys[values.index(min_value)])
我目前正在努力更好地理解推导式,因此,我的问题是是否有可能通过列表推导式解决这个问题。
我在想这样的事情
worst = {name for name, stats in car_dict if min(stats)}
但是,我想我仍然误解了if 部分中的某些内容。
顺便说一句,如果我对上述大 O 复杂性的信念有误,请纠正我。
非常感谢!
【问题讨论】:
-
I know this code works with O(1)不正确。list(car_dict.values())需要迭代所有值,因此是 O(n)。 -
第一个块在
O(1)中真的有效吗? -
谢谢! @jpp 不知道
标签: python list dictionary list-comprehension