Home > Backend Development > Python Tutorial > Can python dictionaries be sorted?

Can python dictionaries be sorted?

anonymity
Release: 2019-06-14 11:25:03
Original
8512 people have browsed it

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]
Copy after login

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]
Copy after login

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)
Copy after login

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())]
Copy after login

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))]
Copy after login

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())]
Copy after login

Method 7: Use the sorted function key= parameter sorting:

Sort by key

print sorted(dict1.items(), key=lambda d: d[0])
Copy after login

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
Copy after login

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')])
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template