Python-字典学习笔记(完)
Posted Aspirantlu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-字典学习笔记(完)相关的知识,希望对你有一定的参考价值。
文章目录
字典
字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。
列表中我们通过“下标数字”找到对应的对象。字典中通过“键对象”找到对应的“值对象”。
“键”是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。
“值”可以是任意的数据,并且可重复。
空字典表示方式:或dict()
字典的创建
1. 方式一
# key: value
dict1 = 'one': 1, 'two': 2, 'three': 3
print(dict1)
2. 方式二
# dict(zip(keys, values))
# 或dict([(k, v), (k, v)])
# 或dict(((k, v), (k, v)))
k = ['one', 'two', 'three']
v = [1, 2, 3]
dict2 = dict(zip(k, v))
print(dict2)
dict3 = dict([('one', 1), ('two', 2), ('three', 3)])
print(dict3)
dict3 = dict((('one', 1), ('two', 2), ('three', 3)))
print(dict3)
3. 方式三
# dict(key=value)
dict4 = dict(one=1, two=2, three=3)
print(dict4)
4. 方式四
# 字典推导式
lst1 = ['one', 'two', 'three']
lst2 = [1, 2, 3]
dict5 = lst1[i]: lst2[i] for i in range(len(lst1))
print(dict5)
5. 方式五
# fromkeys()
# 没有指定value,默认None
dict6 = dict.fromkeys(['k1', 'k2', 'k3'])
print(dict6) # 'k1': None, 'k2': None, 'k3': None
# 指定value
dict7 = dict.fromkeys(['k1', 'k2', 'k3'], 'value')
print(dict7) # 'k1': 'value', 'k2': 'value', 'k3': 'value'
访问字典元素
a = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
- 通过
[键]
获得“值”。若键不存在,则抛出异常。
a = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
print(a['name']) # Lucy
print(a['sex']) # 报错
- 通过
get()
方法获得“值”。推荐使用。优点是:指定键不存在,返回None;也可以设定指定键不存在时默认返回的对象。推荐使用get()
获取“值对象”。
a = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
print(a.get('sex', '不存在此键')) # 不存在此键
- 列出所有的键值对
for k, v in a.items():
print(k, v)
- 列出所有的键,列出所有的值
for k in a.keys():
print(k)
for v in a.values():
print(v)
- 检测一个“键”是否在字典中
print('name' in a) # True
字典元素添加
- 给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。
a = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
a['adder'] = '上海市'
print(a)
update()
# 更新,有则覆盖,无则添加
# 1. 增加键值对
# 方式一:
dic9 = 'name': 'lucy', 'age': 18
dic9.update(hobby='运动', hight=178)
print(dic9) # 'name': 'lucy', 'age': 18, 'hobby': '运动', 'hight': 178
# 方式二:
dic10 = 'name': 'lucy', 'age': 18
dic10.update([('hobby', '运动'), ('hight', 178)])
print(dic10) # 'name': 'lucy', 'age': 18, 'hobby': '运动', 'hight': 178
dic10 = 'name': 'lucy', 'age': 18
dic10.update((('hobby', '运动'), ('hight', 178)))
print(dic10) # 'name': 'lucy', 'age': 18, 'hobby': '运动', 'hight': 178
# 方式三:
dic11 = 'name': 'lucy', 'age': 18
dic12 = 'name': 'tom', 'hight': 178
dic11.update(dic12)
print(dic11) # 'name': 'tom', 'age': 18, 'hight': 178
# 2. 修改键所对应的值
dic13 = 'name': 'lucy', 'age': 18
dic13.update(name='tom')
print(dic13) # 'name': 'tom', 'age': 18
setdefault(key,default)
# setdefault(key,default)
# 如果default省略,向字典中添加了key:None,
# 如果dedault未省略。则向字典中添加了key:default
dict1 = "name": "张三", "age": 18, "score": 100, "hobby": "篮球"
print(dict1)
dict1.setdefault("111")
print(dict1) # 'name': '张三', 'age': 18, 'score': 100, 'hobby': '篮球', '111': None
dict1.setdefault("222", 222)
print(dict1) # 'name': '张三', 'age': 18, 'score': 100, 'hobby': '篮球', '111': None, '222': 222
字典元素删除
pop()
删除指定键值对,并返回对应的“值对象”。
a = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
b = a.pop('age')
print(b) # 18
print(a) # 'name': 'Lucy', 'job': 'programmer'
popitem()
随机删除一个键值对,并返回。若想一个接一个地移除并处理项,这个方法就非常有效。
a = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
b = a.popitem()
print(b)
a = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
for i in range(len(a)):
a.popitem()
print(a) #
clear()
删除所有键值对。
a = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
a.clear()
print(a) #
del
a = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
del a['name']
print(a) # 'age': 18, 'job': 'programmer'
字典的其他方法
copy()
import copy
# a.copy(),和列表的使用完全相同,拷贝的是最外层的地址
dict4 = "name": "张三", "age": 18, "score": 100, "hobby": "篮球"
print(dict4)
dict5 = dict4.copy()
dict4["name"] = "jack"
print(dict4)
print(dict5)
print(dict5 is dict4)
print("*" * 20)
# 思考问题,列表和字典的拷贝
# a.
list1 = [1, 2, 3, "name": "张三", "age": 18]
list2 = list1.copy()
list1[-1]["age"] = 20
print(list2)
# b
list1 = [1, 2, 3, "name": "张三", "age": 18]
list2 = copy.deepcopy(list1)
list1[-1]["age"] = 20
print(list2)
print("*" * 30)
# c
dict4 = "hobby": ["篮球"]
print(dict4)
dict5 = dict4.copy()
dict4["hobby"].append("足球")
print(dict5)
序列解包(拆包)
序列解包可以用于元组、列表、字典,可以让我们方便的对多个变量赋值。
>>> x,y,z = (10,20,30)
>>> x
10
>>> y
20
>>> z
30
>>> a,b,c = [10,20,30]
>>> a
10
>>> b
20
>>> c
30
序列解包用于字典时,默认是对“键”进行操作;如果需要对键值对操作,则需要使用items();如果需要对“值”进行操作,则需要使用values();
di = 'name': 'Lucy', 'age': 18, 'job': 'programmer'
a, b, c = di
print(a, b, c) # name age job
a, b, c = di.items()
print(a) # ('name', 'Lucy')
a, b, c = di.values()
print(a) # Lucy
以上是关于Python-字典学习笔记(完)的主要内容,如果未能解决你的问题,请参考以下文章