Python | ShareTechnote
Python字典就像Python中的集合或列表一样,是一组不同的元素。字典与列表/数组的主要区别在于,它为每个元素分配一个特定的键。字典中的每个元素都指定为{'Key': Element}。
Python字典是一种内置的数据结构,用于存储键值对的集合。字典是可变的、无序的,并且允许根据键高效地检索、插入和删除元素。字典中的键必须是唯一且可哈希的,这意味着它们可以是整数、浮点数、字符串和元组(如果元组包含可哈希的元素)。与键关联的值可以是任何数据类型,包括其他字典或列表。
要创建一个字典,可以使用花括号{}并使用冒号分隔键和值,键值对之间用逗号分隔。可以使用空的花括号{}或dict()构造函数创建空字典。
字典的一些主要功能包括:
- 键值对:字典将数据存储为键值对,允许根据键有效地检索值。
- 无序:字典中的元素没有定义的顺序。但是,从Python 3.7开始,键值对的插入顺序作为实现细节保留,这在Python 3.10中成为语言特性。
- 可变:字典可以在创建后进行修改,允许您添加、删除或更新键值对。
- 可哈希键:字典的键必须是可哈希的,这意味着像列表和其他字典这样的可变类型不能用作键。
Python提供了各种内置方法来操作字典,例如:
- keys(): 返回显示字典中所有键的视图对象。
- values(): 返回显示字典中所有值的视图对象。
- items(): 返回以元组形式显示字典中所有键值对的视图对象。
- get(): 获取与给定键关联的值,如果键不存在,则返回默认值。
- update(): 从另一个字典或键值对的可迭代对象添加或更新键值对。
- pop(): 删除并返回与给定键关联的值,如果键不存在,则返回默认值。
- popitem(): 删除并返回最后插入的键值对作为元组。
- del: 从字典中删除基于其键的键值对。
- clear(): 从字典中删除所有键值对。
- len(): 返回字典中键值对的数量。
- in: 检查键是否存在于字典中。
- copy(): 返回字典的浅拷贝。
数组、集合和字典都是Python中的数据结构集合,但在属性和使用场景上有一些关键区别。以下是它们之间的主要区别的摘要:
数组:
- 数组是固定大小的、可变的、有序的元素集合,通常具有相同的数据类型。
- 可以通过索引访问和修改元素,实现快速高效的随机访问。
- 数组不是Python中的内置数据结构,但可以通过array模块或其他库(如NumPy)使用。
- 适用场景:数组适用于需要存储和操作相同数据类型的元素的情况,特别是在处理大量数值数据或需要对数据执行数学运算时。
集合:
- 集合是无序的、唯一的、可哈希的元素集合。
- 集合不允许重复元素,不支持索引或切片。
- 集合是可变的,可以在创建后添加或删除元素。
- 集合是Python中的内置数据结构,可以使用set()构造函数或花括号{}创建。
- 适用场景:集合适用于需要存储唯一元素、执行成员测试或执行数学集合操作(如并集、交集和差集)的情况。
字典:
- 字典以无序的方式存储键值对集合。
- 键必须是唯一的且可哈希的,而值可以是任何数据类型。
- 字典是可变的,并且可以在创建后添加、删除或更新键值对。
- 字典是Python中的内置数据结构,可以使用花括号{}或dict()构造函数创建。
- 适用场景:字典适用于需要根据键存储和操作数据的情况,例如存储配置设置、计算单词频率或实现缓存机制。
示例:
以下是一些示例,展示了字典的各种用法和操作:
注意:本页面中的所有示例都是用Python 3.x编写的。如果您使用的是Python 2.x,则可能无法正常工作。
注意:本页面中的所有示例假定都是在Windows 7上编写/运行的,除非特别指出。您可能需要根据操作系统进行一些语法调整。
< Example 1 >
fruits = {1:"Apple",2:"BlueBerry",3:"Banana",4:"SrawBerry"}
print(fruits)
Result :----------------------------------
{1: 'Apple', 2: 'BlueBerry', 3: 'Banana', 4: 'SrawBerry'}
< Example 2 >
Food = {'Fruit':'Apple','Grain':'Rice','Vegetable':'Cabbage'}
print(Food)
Result :----------------------------------
{'Fruit': 'Apple', 'Grain': 'Rice', 'Vegetable': 'Cabbage'}
< Example 3 >
fruits = {100:"Apple",200:"BlueBerry",300:"Banana",400:"SrawBerry"}
print(fruits[200])
Result :----------------------------------
BlueBerry
< Example 4 >
Food = {'Fruit':'Apple','Grain':'Rice','Vegetable':'Cabbage'}
print(Food['Vegetable'])
Result :----------------------------------
Cabbage
NOTE : Try print(Food['Cabbage']) and see what you get. It will give you an error since 'Cabbage' is not a Key. it is an element.
< Example 5 >
Food = {'Fruit':'Apple','Grain':'Rice','Vegetable':'Cabbage'}
print('================')
for f in Food :
print(f)
print('================')
foods = list(Food.items())
for F in foods :
print(F)
print('================')
k = list(Food.keys())
for i in range(0,len(k)) :
print(Food[k[i]])
print('================')
k = list(Food.keys())
for ki in k :
print(ki,',',Food[ki])
Result :----------------------------------
================ <-- for f in Food :
Fruit
Grain
Vegetable
================ <-- for F in foods :
('Fruit', 'Apple')
('Grain', 'Rice')
('Vegetable', 'Cabbage')
================ <-- for i in range(0,len(k)) :
Apple
Rice
Cabbage
================ <-- for ki in k :
Fruit , Apple
Grain , Rice
Vegetable , Cabbage
< Example 6 >
Food = {'Fruit':'Apple','Grain':'Rice','Vegetable':'Cabbage'}
print('================')
foods = list(Food.items())
for f in foods :
print(f)
Food['Fruit'] = 'Grape'
print('================')
foods = list(Food.items())
for f in foods :
print(f)
Result :----------------------------------
================ <-- Original Dictionary
('Fruit', 'Apple')
('Grain', 'Rice')
('Vegetable', 'Cabbage')
================ <-- Dictionary After Change
('Fruit', 'Grape')
('Grain', 'Rice')
('Vegetable', 'Cabbage')
< Example 7 >
Food = {'Fruit':'Apple','Grain':'Rice','Vegetable':'Cabbage'}
print('================')
foods = list(Food.items())
for f in foods :
print(f)
Food.update({'Noodle':'Pasta'})
print('================')
foods = list(Food.items())
for f in foods :
print(f)
Result :----------------------------------
================ <-- Original Dictionary
('Fruit', 'Apple')
('Grain', 'Rice')
('Vegetable', 'Cabbage')
================ <-- Dictionary After Change
('Fruit', 'Apple')
('Grain', 'Rice')
('Vegetable', 'Cabbage')
('Noodle', 'Pasta')
< Example 8 >
Food = {'Fruit':'Apple','Grain':'Rice','Vegetable':'Cabbage'}
print('================')
foods = list(Food.items())
for f in foods :
print(f)
Food.update({'Fruit':'Grape','Noodle':'Pasta'})
print('================')
foods = list(Food.items())
for f in foods :
print(f)
Result :----------------------------------
================ <-- Original Dictionary
('Fruit', 'Apple')
('Grain', 'Rice')
('Vegetable', 'Cabbage')
================ <-- Dictionary After Change
('Fruit', 'Grape') // This is replaced
('Grain', 'Rice')
('Vegetable', 'Cabbage')
('Noodle', 'Pasta') // This is added
< Example 9 >
Food = {'Fruit':'Apple','Grain':'Rice','Vegetable':'Cabbage'}
print('================')
foods = list(Food.items())
for f in foods :
print(f)
del Food['Fruit']
print('================')
foods = list(Food.items())
for f in foods :
print(f)
Result :----------------------------------
================ <-- Original Dictionary
('Fruit', 'Apple')
('Grain', 'Rice')
('Vegetable', 'Cabbage')
================ <-- Dictionary After removing an element
('Grain', 'Rice')
('Vegetable', 'Cabbage')
< Example 10 >