python基础之字典 Dictionary
字典 Dictionary¶
在Python中,字典(Dictionary)是一种无序的、可变的数据类型,用于存储键-值(key-value)对的集合。字典是通过键来索引和访问值的,而不是通过位置。
字典 dictionary ,在一些编程语言中也称为 hash , map ,是一种由键值对组成的数据结构。
基本操作¶
python
用{}
或者dict()
来创建声明一个空字典
In [2]:
d = {}
type(d)
Out[2]:
dict
In [7]:
d = dict()
type(d)
Out[7]:
dict
In [8]:
# {}初始化一个字典
b = {'one':10,'two':2,'name':'wang'}
b
Out[8]:
{'one': 10, 'two': 2, 'name': 'wang'}
In [10]:
# dict()初始化一个字典
b = dict(
[('foozelator', 123),
('frombicator', 18),
('spatzleblock', 34),
('snitzelhogen', 23)
])
b
Out[10]:
{'foozelator': 123, 'frombicator': 18, 'spatzleblock': 34, 'snitzelhogen': 23}
新增值¶
In [4]:
d['name'] = 'dog'
d['age'] = 20
d
Out[4]:
{'name': 'dog', 'age': 20}
查看键值¶
In [5]:
d['name']
Out[5]:
'dog'
修改值¶
In [6]:
d['name'] = 'xiao ming'
d
Out[6]:
{'name': 'xiao ming', 'age': 20}
字典是没有顺序的,因此,Python中不能用支持用数字索引按顺序查看字典中的值,而且数字本身也有可能成为键值,这样会引起混淆:
In [9]:
# 报错
d[0]
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) Cell In[9], line 1 ----> 1 d[0] KeyError: 0
字典的键类型¶
出于hash的目的,Python中要求这些键值对的键必须是不可变的,而值可以是任意的Python对象。
In [11]:
# 字典中的数组
d = {}
d['mutable'] = ['changeable', 'variable', 'varying', 'fluctuating',
'shifting', 'inconsistent', 'unpredictable', 'inconstant',
'fickle', 'uneven', 'unstable', 'protean']
d['immutable'] = ['fixed', 'set', 'rigid', 'inflexible',
'permanent', 'established', 'carved in stone']
d
Out[11]:
{'mutable': ['changeable', 'variable', 'varying', 'fluctuating', 'shifting', 'inconsistent', 'unpredictable', 'inconstant', 'fickle', 'uneven', 'unstable', 'protean'], 'immutable': ['fixed', 'set', 'rigid', 'inflexible', 'permanent', 'established', 'carved in stone']}
In [13]:
# 定义4个字典
e1 = {'mag': 0.05, 'width': 20, 'name':'dog'}
e2 = {'mag': 0.04, 'width': 25}
e3 = {'mag': 0.05, 'width': 80}
e4 = {'mag': 0.03, 'width': 30}
events = {1:e1, 2:e2, 3:e3, 4:e4}
events
Out[13]:
{1: {'mag': 0.05, 'width': 20, 'name': 'dog'}, 2: {'mag': 0.04, 'width': 25}, 3: {'mag': 0.05, 'width': 80}, 4: {'mag': 0.03, 'width': 30}}
有时候,也可以使用元组作为键值,例如,可以用元组做键来表示从第一个城市飞往第二个城市航班数的多少:
In [22]:
connections = {}
connections[('New York', 'Seattle')] = 100
connections[('Austin', 'New York')] = 200
connections[('New York', 'Austin')] = 400
print(connections[('New York', 'Seattle')])
print(connections[('Austin', 'New York')])
100 200
字典的方法¶
In [23]:
d = {'one':'a','two':2}
d['three']
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) Cell In[23], line 2 1 d = {'one':'a','two':2} ----> 2 d['three'] KeyError: 'three'
In [25]:
print(d.get('three'))
None
In [29]:
print(d.get('three', 3))
3
pop()方法¶
pop
方法可以弹出字典中某个键对应的值,同时也可以指定默认参数:
dict.pop(key, default=None)
删除并返回字典中key对应的值,如果没有这个key,则返回指定的默认值
In [36]:
d = {'one':'a','two':2}
d.pop('one')
print(d)
{'two': 2}
In [37]:
d.pop('three', 3)
Out[37]:
3
In [38]:
# 与列表一样,del 函数可以用来删除字典中特定的键值对,例如:
del d['two']
print(d)
{}
In [39]:
person = {'first':'jm', 'last':'tom', 'born':'1990'}
print(person)
person.update({'first':'xiaoming', 'born':'2014'})
print(person)
{'first': 'jm', 'last': 'tom', 'born': '1990'} {'first': 'xiaoming', 'last': 'tom', 'born': '2014'}
in查询字典中是否存在该键¶
In [41]:
person = {'first':'jm', 'last':'tom', 'born':'1990'}
'first' in person
Out[41]:
True
In [42]:
'name' in person
Out[42]:
False
keys()、values()和items()方法¶
d.keys()
返回一个由所有键组成的列表;
d.values()
返回一个由所有值组成的列表;
d.items()
返回一个由所有键值对元组组成的列表;
In [43]:
person= {'first':'jm', 'last':'tom', 'born':'1990'}
person.keys()
Out[43]:
dict_keys(['first', 'last', 'born'])
In [44]:
person.values()
Out[44]:
dict_values(['jm', 'tom', '1990'])
In [45]:
person.items()
Out[45]:
dict_items([('first', 'jm'), ('last', 'tom'), ('born', '1990')])
源码下载:
链接:https://pan.baidu.com/s/1UAKVxkmPWafse8Yq5tYKQA
提取码:upxl