按值pythonsorting字典
假设我有一个字典。
data = {1:'b', 2:'a'}
我想按“b”和“a”来sorting数据,以便得到结果
'a','b'
我怎么做?
有任何想法吗?
获取值使用
sorted(data.values())
要获得匹配的键,请使用key
function
sorted(data, key=data.get)
获取按值sorting的元组列表
sorted(data.items(), key=lambda x:x[1])
相关内容:请参阅此处的讨论: 字典是以Python 3.6+订购的
如果你真的想sorting字典,而不是仅仅获得一个sorting列表使用collections.OrderedDict
>>> from collections import OrderedDict >>> from operator import itemgetter >>> data = {1: 'b', 2: 'a'} >>> d = OrderedDict(sorted(data.items(), key=itemgetter(1))) >>> d OrderedDict([(2, 'a'), (1, 'b')]) >>> d.values() ['a', 'b']
从你的评论到gnibbler答案,我会说你想要一个按值sorting的键值对的列表:
sorted(data.items(), key=lambda x:x[1])
sorting值:
sorted(data.values())
回报
['a','b']
感谢所有的答案。 你们都是我的英雄;-)
最后是这样的:
d = sorted(data, key = d.get) for id in d: text = data[id]
我也认为重要的是要注意,Python dict
对象types是一个哈希表( 更多在这里 ),因此不能被sorting没有将其键/值转换为列表。 这允许的是dict
检索在恒定的时间O(1)
,不pipe字典中的元素的大小/数量。
话虽如此,一旦你sorting它的键 – sorted(data.keys())
,或值 – sorted(data.values())
,然后可以使用该列表访问devise模式中的键/值,如:
for sortedKey in sorted(dictionary): print dictionary[sortedKeY] # gives the values sorted by key for sortedValue in sorted(dictionary.values()): print sortedValue # gives the values sorted by value
希望这可以帮助。
在你对John的评论中,你build议你需要字典的键和值,而不仅仅是值。
PEP 256build议用这个值来对字典进行sorting。
import operator sorted(d.iteritems(), key=operator.itemgetter(1))
如果你想降序,做这个
sorted(d.iteritems(), key=itemgetter(1), reverse=True)
没有lambda方法
# sort dictionary by value d = {'a1': 'fsdfds', 'g5': 'aa3432ff', 'ca':'zz23432'} def getkeybyvalue(d,i): for k, v in d.items(): if v == i: return (k) sortvaluelist = sorted(d.values()) sortresult ={} for i1 in sortvaluelist: key = getkeybyvalue(d,i1) sortresult[key] = i1 print ('=====sort by value=====') print (sortresult) print ('=======================')
您可以从值中创buildsorting列表并重build字典:
myDictionary={"two":"2", "one":"1", "five":"5", "1four":"4"} newDictionary={} sortedList=sorted(myDictionary.values()) for sortedKey in sortedList: for key, value in myDictionary.items(): if value==sortedKey: newDictionary[key]=value
输出:newDictionary = {'one':'1','two':'2','1four':'4','five':'5'}