如果您想在不使用循环的情况下实现此目标,并且顺序不重要,可以尝试以下方法:
dc = {'1956': 21, '2188': 76, '1307': 9, '1305': 22, '2196': 64, '3161': 1, '1025': 22, '321': 60, '1959': 1, '1342': 7, '3264': 2}
dc_val = sorted(dc.values(), reverse = True)
target_index = dc_val.index(60)
keys = sorted(dc.keys(), key = lambda x: dc[x])
target_keys = keys[-target_index:]
print(target_keys)
>>> ['2196', '2188']
我们希望按值对字典进行排序,并选择值为60的索引,然后获取该索引之后所有对应值的键。因此,首先将倒序排序的值存储在dc_val
中,为什么要反转呢?因为如果有多个值为60的情况下,这将对接下来的方法非常重要。假设你有两个值为60的键,那么dc_val
将会是:
[76, 64, 60, 60, 22, 22, 21, 9, 7, 2, 1, 1]
现在,
target_index
将是列表中第一个出现60的索引,即
2,也就是第
三个索引。
然后,
keys
按照它们的值进行排序(不是反向排序)。
接下来,我们的目标键变成了倒数
三个元素之后的元素,我们可以通过我们的
target_index访问它们,像这样:
keys[-target_index:]
。
[k for k, v in dict.items() if v > 60]
OR[k for k in dict if dict[k] > 60]
- Tomerikoo