列表与元组是依次排列的,可以称作为序列化数据结构。只要知道元素的特定位置,即可以使用索引取得元素的内容。Map是非序列化的数据结构。
1,定义字典
字典也是一个列表型的数据结构,但是他的元素是使用“键-值”方式配对存储,在操作时使用键取得值的内容,定义字典是将键-值放在大括号{}内。
name_dict = {键1:值1,键2:值2 ....键n:值n}
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
print(fruits)
print(noodles)
# 列出字典的类型
print("字典fruits数据类型是:",type(fruits))
对应的输出结果为:
{'西瓜': 15, '橡胶': 12, '水蜜桃': 45}
{'牛肉面': 15, '肉丝面': 12, '阳春面': 12}
字典fruits数据类型是: <class 'dict'>
2,列出字典元素的值
字典的元素是使用“键-值”方式配对存储,如果想要获得元素的值,可以将键当做索引方式进行处理,因此字典中的值不能包括重复的元素。
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
print("西瓜一千克:",fruits["西瓜"])
print("牛肉面一碗:",noodles["牛肉面"])
# 列出字典的类型
print("字典fruits数据类型是:",type(fruits))
对应的输出结果为:
西瓜一千克: 15
牛肉面一碗: 15
字典fruits数据类型是: <class 'dict'>
3,增加字典的元素
针对字典,可以通过如下的方式添加字典元素
name_dict[键] = 值
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
# 增加水果香蕉
print("增加水果香蕉前")
print(fruits)
fruits["香蕉"]=55
print("增加水果香蕉后")
print(fruits)
对应的输出结果为:
增加水果香蕉前
{'西瓜': 15, '橡胶': 12, '水蜜桃': 45}
增加水果香蕉后
{'西瓜': 15, '橡胶': 12, '水蜜桃': 45, '香蕉': 55}
4,更改字典的元素
针对字典中元素的更改可以采用直接的方式
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
# 增加水果香蕉
print("增加水果香蕉前")
print(fruits)
fruits["香蕉"]=55
print("增加水果香蕉后")
print(fruits)
fruits["香蕉"]=54
print("香蕉发生了变化")
print(fruits)
对应的输出结果为:
增加水果香蕉前
{'西瓜': 15, '橡胶': 12, '水蜜桃': 45}
增加水果香蕉后
{'西瓜': 15, '橡胶': 12, '水蜜桃': 45, '香蕉': 55}
香蕉发生了变化
{'西瓜': 15, '橡胶': 12, '水蜜桃': 45, '香蕉': 54}
5,删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。
显式删除一个字典用del命令,如下实例:
del name_dict[键]
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
# 增加水果香蕉
print("增加水果香蕉前")
print(fruits)
fruits["香蕉"]=55
print("增加水果香蕉后")
print(fruits)
print("删除香蕉元素")
del fruits["香蕉"]
print(fruits)
对应的输出结果为:
增加水果香蕉前
{'西瓜': 15, '橡胶': 12, '水蜜桃': 45}
增加水果香蕉后
{'西瓜': 15, '橡胶': 12, '水蜜桃': 45, '香蕉': 55}
删除香蕉元素
{'西瓜': 15, '橡胶': 12, '水蜜桃': 45}
删除字典的所有元素
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
print(noodles)
print("清除所有的面条类")
noodles.clear()
print(noodles)
对应的输出结果为:
{'牛肉面': 15, '肉丝面': 12, '阳春面': 12}
清除所有的面条类
{}
删除字典
del name_dict
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
print(noodles)
print("清除所有的面条字典")
del noodles
print(noodles)
对应的输出结果为:
{'牛肉面': 15, '肉丝面': 12, '阳春面': 12}
清除所有的面条字典
Traceback (most recent call last):
File "/home/ss/learn/cpp/map_demo.py", line 6, in <module>
print(noodles)
NameError: name 'noodles' is not defined
6,建立一个空的字典
name_dict={}:空字典的建立
new_dict = name_dict.copy():字典进行复制
length = len(name_dict):字典 元素的数量
key in name_dict :可以验证键key 在字典name_dict中
7,字典元素的遍历
针对字典键值遍历,Python提供了items()方法,可以让我们取得键值配对的元素。
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
for key ,value in noodles.items():
print("{}:{}".format(key,value))
对应的输出结果为:
牛肉面:15
肉丝面:12
阳春面:12
遍历字典的键
有时候我们不想获得字典的值,只想要键,Python提供了keys()方法,可以获得键的内容。
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
for key in noodles.keys():
print("{}".format(key))
对应的输出结果为:
牛肉面
肉丝面
阳春面
遍历字典的值
有时候我们不想获得字典的键,只想要值,Python提供了values()方法,可以获得键的内容。
fruits = {"西瓜":15,"橡胶":12,"水蜜桃":45}
noodles = {"牛肉面":15,"肉丝面":12,"阳春面":12}
for value in noodles.values():
print("{}".format(value))
对应的输出结果为:
15
12
12
8,字典内列表元素
在Python的应用中也允许将在列表放在字典中。这时列表是将字典的某个键的值。需要使用嵌套循环和字典的方法items(),外层循环是取得字典的键,内层循环则是将含列表的值拆解。下列是定义sports字典的实例。
sports = {
"Curry":["篮球","美式足球"],
"Durant":["棒球"],
"James":["美式足球","棒球","篮球"]
}
for sport,favorites_sport in sports.items():
print("%s 喜欢的运动是" %sport)
for favorite in favorites_sport:
print(" ",favorite)
对应的输出结果为:
Curry 喜欢的运动是
篮球
美式足球
Durant 喜欢的运动是
棒球
James 喜欢的运动是
美式足球
棒球
篮球
9,fromkeys()
name_dict = dict.fromkeys(seq[,value]):通过序列化建立字典
seq1 = ["name", "city"]
list_dict = dict.fromkeys(seq1)
print("list_dict:", list_dict)
list_dict2 = dict.fromkeys(seq1,"chicago")
print("list_dict2:", list_dict2)
对应的输出结果为:
list_dict: {'name': None, 'city': None}
list_dict2: {'name': 'chicago', 'city': 'chicago'}
10,get()
get()可以搜索字典的键,如果简直存在,则返回键的值,如果不存在,则返回默认值。
ret_value = dict.get(key,default)
fruits={"Apple":20,"orange":25}
ret_value1 = fruits.get("orange")
print("Value = ",ret_value1)
ret_value2 = fruits.get("orange1",10)
print("Value = ",ret_value2)
对应的输出结果为:
Value = 25
Value = 10