Table of Contents
Generate dictionary from sequence
Default value of key
Exchange key and value
Sequence modification and initialization
Key, items set operation
Sort the dictionary by key or value
Multiple dictionary sorting
Home Backend Development Python Tutorial Python Dictionary: Is there any advanced gameplay that I don't know how to do?

Python Dictionary: Is there any advanced gameplay that I don't know how to do?

Apr 11, 2023 pm 11:58 PM
python dictionary code

Python Dictionary: Is there any advanced gameplay that I don't know how to do?


Generate dictionary from sequence

We convert the following sequence into dict type.

lst = [('a', 1), ('b', 2), ('c', 3)]
Copy after login

Common writing method

for k, v in lst:
dic[k] = v
Copy after login

More pythonic writing method

Use dictionary derivation to quickly generate a dictionary.

{k: v for k, v in lst}
Copy after login

Default value of key

When the specified key does not exist, set the value to 0.

Ordinary writing method

if key not in dct:
dct[key] = 0
Copy after login

pythonic writing method

dct[key] = dct.get(key, 0)
Copy after login

Exchange key and value

Ordinary writing method

dic = {'Python': 1, 'Java': 2}
new_dic = {}
for k, v in dic.items():
new_dic[v] = k
Copy after login

More pythonic writing method

dic = {'Python': 1, 'Java': 2}
new_dic = {v: k for k, v in dic.items()}

Copy after login

Sequence modification and initialization

Sample data

lst = [('a', 1), ('b', 2), ('c', 3)]
dic = {'a': [0]}
Copy after login

If we need to update the data in dic based on lst, when the key exists, the value will be added to the end of the original sequence , otherwise initialize value and save it in sequence.

Ordinary writing method

for key, value in lst:
if key in dic:
dic[key].append(value)
else:
dic[key] = [value]
Copy after login

More pythonic writing method

for (key, value) in lst:
group = dic.setdefault(key, [])
group.append(value)
# dic:{'a': [0, 1], 'b': [2], 'c': [3]}
Copy after login

setdefault(key, default) will first determine whether the key exists. If it exists, it will return dct[key], if it does not exist, it will return Then set dct[key] to [] and return.

Key, items set operation

If we now need to obtain the mapping information of the intersection of the keys of two dictionaries.

Ordinary writing method

dic1 = {'Python': 1, 'Java': 2, 'C': 3}
dic2 = {'Python': 3, 'Java': 2, 'C++': 1}
new_dic = {}
for k, v in dic1.items():
if k in dic2.keys():
new_dic[k] = v
print(new_dic)
# {'Python': 1, 'Java': 2}
Copy after login

More pythonic writing method

dic1 = {'Python': 1, 'Java': 2, 'C': 3}
dic2 = {'Python': 3, 'Java': 2, 'C++': 1}
print({k: dic1[k] for k in dic1.keys() & dic2.keys()})
# {'Python': 1, 'Java': 2}
Copy after login

The dic1.keys() & dic2.keys() here use keys() for set operations , items() can also perform set operations.

If we now want to obtain the same key and value parts in two dictionaries

dic1 = {'Python': 1, 'Java': 2, 'C': 3}
dic2 = {'Python': 3, 'Java': 2, 'C++': 1}
print(dic1.items() & dic2.items())
# {('Java', 2)}
Copy after login

Flexibly use the characteristics of keys and items() set operations to quickly extract the content we want.

Sort the dictionary by key or value

Use the sorted() function to quickly sort the key or value.

dic = {'a': 2, 'b': 1, 'c': 3, 'd': 0}
lst1 = sorted(dic.items(), key=lambda x: x[0], reverse=False)
# [('a', 2), ('b', 1), ('c', 3), ('d', 0)]
lst2 = sorted(dic.items(), key=lambda x: x[1], reverse=False)
# [('d', 0), ('b', 1), ('a', 2), ('c', 3)]
print('按照键降序:', {key: value for key, value in lst1})
print('按照值降序:', {key: value for key, value in lst2})
# 按照键降序: {'a': 2, 'b': 1, 'c': 3, 'd': 0}
# 按照值降序: {'d': 0, 'b': 1, 'a': 2, 'c': 3}
Copy after login

Multiple dictionary sorting

If a sequence contains multiple dictionaries, these dictionaries must now be sorted according to conditions. This can also be achieved using the sorted() function.

dict_list = [
{'letter': 'B', 'number': '2'},
{'letter': 'A', 'number': '3'},
{'letter': 'B', 'number': '1'}
]
# 按 letter 排序
print(sorted(dict_list,
 key=lambda dic: dic['letter']))
# 按 letter, number 排序
print(sorted(dict_list,
 key=lambda dic: (dic['letter'], dic['number'])))
# [{'letter': 'A', 'number': '3'}, {'letter': 'B', 'number': '2'}, {'letter': 'B', 'number': '1'}]
# [{'letter': 'A', 'number': '3'}, {'letter': 'B', 'number': '1'}, {'letter': 'B', 'number': '2'}]
Copy after login

Of course, if you know itemgetter(), the above code can be changed and the execution speed will be faster.

from operator import itemgetter
print(sorted(dict_list
 key=itemgetter('letter')))
print(sorted(dict_list,
 key=itemgetter('letter', 'number')))
Copy after login

itemgetter() does not obtain a value, but defines a function through which it is applied to the target object.

The above is the detailed content of Python Dictionary: Is there any advanced gameplay that I don't know how to do?. For more information, please follow other related articles on the PHP Chinese website!

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

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What are the advantages and disadvantages of templating? What are the advantages and disadvantages of templating? May 08, 2024 pm 03:51 PM

What are the advantages and disadvantages of templating?

How to download deepseek Xiaomi How to download deepseek Xiaomi Feb 19, 2025 pm 05:27 PM

How to download deepseek Xiaomi

Google AI announces Gemini 1.5 Pro and Gemma 2 for developers Google AI announces Gemini 1.5 Pro and Gemma 2 for developers Jul 01, 2024 am 07:22 AM

Google AI announces Gemini 1.5 Pro and Gemma 2 for developers

Share several .NET open source AI and LLM related project frameworks Share several .NET open source AI and LLM related project frameworks May 06, 2024 pm 04:43 PM

Share several .NET open source AI and LLM related project frameworks

Tsinghua University and Zhipu AI open source GLM-4: launching a new revolution in natural language processing Tsinghua University and Zhipu AI open source GLM-4: launching a new revolution in natural language processing Jun 12, 2024 pm 08:38 PM

Tsinghua University and Zhipu AI open source GLM-4: launching a new revolution in natural language processing

How do you ask him deepseek How do you ask him deepseek Feb 19, 2025 pm 04:42 PM

How do you ask him deepseek

How to save the evaluate function How to save the evaluate function May 07, 2024 am 01:09 AM

How to save the evaluate function

What software is NET40? What software is NET40? May 10, 2024 am 01:12 AM

What software is NET40?

See all articles