我有以下字典: some_dic = {65:5,67:5,69:5} 我想得到一个保存最后一个值的键。 例如:
>> some_dic.keys()
dict_keys([65, 67, 69])
in this example, I would like to get 69.
我该怎么做? 我试图将some_dic.keys()转换为列表,然后使用函数reverse() 但当然,它不会导致任何地方..
答案 0 :(得分:4)
标准词典中的“最后出现”没有意义;字典是无序的。假设您的意思是指具有该值的最大键,您可以执行类似
的操作>>> some_dic = {65:5, 67:5, 69:5, 71:3}
>>> find_v = 5
>>> max(k for k,v in some_dic.items() if v == find_v)
69
答案 1 :(得分:1)
dict
没有订购。因此,不应该尝试任何此类事情。
您可能想要做的是找到一种替代数据结构,可能是OrderedDict。
答案 2 :(得分:1)
这不能用词典表示,因为它们没有订购。
例如,假设some_dic
是:
some_dic = {65: 5, 67: 5, 69: 5, 70 : 5, 50 : 5, 40 : 5, 66 : 5}
您可能希望获得66
作为答案,因为它是5
的最后一个外观,但keys
是:
print some_dic.keys()
>>> [65, 66, 67, 69, 70, 40, 50]
您可能想要使用OrderedDict。
答案 3 :(得分:0)
字典不是有序的,所以这个“最后”键没有任何意义。您可以使用和OrderedDict
解决这个问题。但是,在这种情况下,您似乎只想找到最高键。
这样做的一种方法:
max(key for key in some_dic if some_dic[key] == 5)
答案 4 :(得分:0)
在Python3中,dict.keys()返回一个类似于集合的对象,而不是列表,因此这里的排序顺序是巧合。要获得最大密钥,您可以使用以下代码:
>>> some_dic = {65: 5, 67: 5, 69: 5}
>>> some_dic.keys()
dict_keys([65, 67, 69])
>>> max(some_dic.keys())
69
但听起来你实际上是在要求最大的键值为5.这只是稍微复杂一些,可以使用生成器表达式来完成:
>>> some_dic = {65: 5, 67: 5, 69: 5}
>>> max( k for k, v in some_dic.items() if v == 5 )
69
>>> some_dic = {65: 5, 67: 5, 69: 5, 70: 6}
>>> max( k for k, v in some_dic.items() if v == 5 )
69
答案 5 :(得分:0)
有点像你想要的那样:
sorted(some_dic.keys())[-1]
那将返回69
,因为那是.keys()
方法返回的列表中的最后一个元素。