Home  >  Article  >  Backend Development  >  Can python dictionaries be sorted?

Can python dictionaries be sorted?

anonymity
anonymityOriginal
2019-06-14 11:25:038443browse

In python, dictionary is a built-in data type, an unordered storage structure, and each element is a key-value pair.

Can python dictionaries be sorted?

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn