Home > Article > Backend Development > Can python dictionaries be sorted?
In python, dictionary is a built-in data type, an unordered storage structure, and each element is a key-value pair.
For example: dict = {'username': 'xiaoming', 'password': '123456'}, where 'username' and 'password' are keys, and ' Xiaoming' and '123456' are values. You can get the reference to the corresponding value value through d[key], but you cannot get the key through value.
For dictionnary, you need to know the following points:
a. The key of dictionary is case-sensitive;
b. A dictionary There cannot be duplicate keys;
c. Dictionaries are unordered and have no concept of element order. They are just simple arrangements of order pairs.
Dictionary is sorted by key/value:
The dictionary itself has no concept of order, but it is always at some point, but we often need to Dictionary sorting
Method 1: Sort by key value.
def sortedDictValues1(adict): items = adict.items() print "items:",items items.sort() return [value for key, value in items] adict = {"a1":11,"b1":2,"c1":30,"e1":20,"d1":4} print sortedDictValues1(adict) items: [('a1', 11), ('c1', 30), ('e1', 20), ('b1', 2), ('d1', 4)] [11, 2, 30, 4, 20]
The items method of the dictionary returns a list of tuples, each tuple containing a pair of items - a key and a corresponding value. A list of tuples can be sorted using the sort() method.
Method 2: Sort by key value
def sortedDictValues2(adict): keys = adict.keys() keys.sort() return [dict[key] for key in keys]
The keys() method of the dictionary object returns a list of all key values in the dictionary, and the order is random. When you need to sort, just use the sort() method on the returned key value list, which is faster than method 1.
Method 3: Sort by key value
def sortedDictValues3(adict): keys = adict.keys() keys.sort() return map(adict.get, keys)
Use the mapping method to perform the last step more efficiently
Method 4: One line Statement
[(k,di[k]) for k in sorted(di.keys())]
Method 5: Sort by value
def sort_by_value(d): items=d.items() backitems=[[v[1],v[0]] for v in items] backitems.sort() return [ backitems[i][1] for i in range(0,len(backitems))]
First exchange the key and value positions of the item into a list, and then according to each list The first value of the element, that is, the original value, sorted:
Method 6: Sort by value
[ v for v in sorted(di.values())]
Method 7: Use the sorted function key= parameter sorting:
Sort by key
print sorted(dict1.items(), key=lambda d: d[0])
Sort by value
print sorted(dict1.items(), key=lambda d: d[1]) python内置sorted函数的帮助文档: sorted(…) sorted(iterable, cmp=None, key=None, reverse=False) –> new sorted list
The method of sorting dictionary, in fact, their core ideas are the same, that is, dictionary The elements in are separated into a list, and the list is sorted, thereby indirectly sorting the dictionary. This "element" can be key, value or item.
Method 8: PYTHON's COLLECTION series - ordered dictionary (ORDEREDDICT)
orderdDict is a supplement to the dictionary type, which retains the order in which dictionary elements are added
import collections dic = collections.OrderedDict() dic["featureName"] = "f1" dic["uId"] = "12345" dic["value"] = "7" print dic #结果 #OrderedDict([('featureName', 'f1'), ('uId', '12345'), ('value', '7')])
The above is the detailed content of Can python dictionaries be sorted?. For more information, please follow other related articles on the PHP Chinese website!