Python

it2026-01-26  10

字典

概念

  字典,Python基础数据类型之一,{}以键值对的形式存储数据。

  以key : value 形式存储数据。例如,name 为 key,Laonanhai 为 value。

dic = {'name': 'Laonanhai', 'age': 45, 'name_list': ['反面教材', '俊俊', ...] }

  Python中唯一的映射类型。用以存储大量的关系型数据。

数据类型的分类

可变类

  可变(不可哈希hash):list、dict、set。例如list = [11, 222, 333]

  不可变(可哈希hash):str、int、tuple、bool。例如name = 'alex'

容器类

  容器类的数据类型:list、dict、tuple。例如l1 = [11, True, 'alex', [22, 33, 44]]

  非容器类的数据类型:int、str、bool。例如s1 = '[11, 22, 33]'

  字典的key必须是不可变的数据类型,是唯一的。

hash算法

  字典的键key通过hash表转换为数字,采用二分查找查询数字。

  字典的value可以使任意的数据类型。

  字典的查询速度非常快,可以存储大量的关系型数据。

  字典在Python 3.5 包含3.5之前都是无序的,但在3.6之后是有序的。

字典的增删改查及其他操作

键唯一

  当存在一样的键时后面的覆盖前边的。例如:

dic = { 'name': 'alex', 'name': 'WuSir' } print(dic)

 

  键必须是不可变的可哈希的数据类型。当键为可变的不可哈希的数据类型是,输出提示错误。例如:

dic = { 'name': 'alex', [1, 2, 3]: 'value' } print(dic)

 

 

__['A'] = B

  A为键,B为值。直接增加,有则覆盖,无则添加。

  无则添加。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} dic['sex'] = 'Laddy_boy' print(dic)

 

  有则覆盖。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} dic['name'] = 'alex' print(dic)

 

__.setdefault('A','B') 

  A为键,B为值。有责不变,无则添加。

  无则添加。

  当只添加A时,对应的B值默认为None。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} dic.setdefault('sex') print(dic)

 

  无则添加。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} dic.setdefault('sex','Laddyboy') print(dic)

 

  有责不变。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} dic.setdefault('name', 'alex') print(dic)

 

__.pop('A')

  有返回值,返回的是键对应的值。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} print(dic.pop(‘age’))print(dic)

 

  当没有此键时,可修改默认返回值。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} print(dic.pop('age1', '没有此键...')) print(dic)

 

__.clear()

  清空字典。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} dic.clear() print(dic)

 

__.popitem()

  随机删除,有返回值,返回值为元组,里面是删除的键值对。

  在Python 3.5及包含3.5之前是无序删除,Python 3.6 以后是删除字典最后一位。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} print(dic.popitem()) print(dic)

 

del

del __

  删除整个字典。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} del dic print(dic)

 

del dic['A']

  按照键A删除对应的键值对。

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} del dic['name'] print(dic)

 

__['A'] = 'B'

  有则覆盖,没有则添加。 

dic = {'name': '老男孩', 'age': 56, 'hobby': 'women'} dic['name'] = 'Alex' print(dic)

 

A.update(B)

  AB分别为两个字典。两个字典的更新。  将B字典的内容覆盖添加到A里面,B不变。

dic = {"name": "jin", "age": 18, "sex": "male"} dic2 = {"name": "alex", "weight": 75} dic2.update(dic) print(dic) print(dic2)

 

 查

__['A"]

  A为键。

dic = {"name": "jin", "age": 18, "sex": "male"} print(dic['name'])

 

  当字典中没有查找的键是,打印报错。

dic = {"name": "jin", "age": 18, "sex": "male"} print(dic['name1'])

 

__.get('A')

  A为键。

dic = {"name": "jin", "age": 18, "sex": "male"} print(dic.get('name'))

 

  当查找的键字典里没有时,默认打印输出None。例如:

dic = {"name": "jin", "age": 18, "sex": "male"} print(dic.get('name1'))

 

  当查找的键字典里面没有时,可将默认输出修改为自己需要的内容。例如:

dic = {"name": "jin", "age": 18, "sex": "male"} print(dic.get('name1','SB,没有此键'))

 

for循环

  输出键。

dic = {"name": "jin", "age": 18, "sex": "male"} for i in dic: print(i)

 

__.keys()

  打印输出的内容为键,打印输出的格式为 dict_keys

dic = {"name": "jin", "age": 18, "sex": "male"} print(dic.keys(), type(dic.keys()))

 

__.values()

  打印输出的内容为值,打印输出的格式为dict_values。

dic = {"name": "jin", "age": 18, "sex": "male"} print(dic.values(), type(dic.values()))

 

__.items()

  打印输出的内容为键值对,放在元组内。打印输出的格式为dict_items

dic = {"name": "jin", "age": 18, "sex": "male"} print(dic.items(), type(dic.items()))

 

for循环

  将键循环打印出来。

dic = {"name": "jin", "age": 18, "sex": "male"} for key in dic.keys(): print(key)

 

键转换成列表

dic = {"name": "jin", "age": 18, "sex": "male"} l_key = list(dic.keys()) print(l_key)

 

for循环打印值

dic = {"name": "jin", "age": 18, "sex": "male"} for i in dic.values(): print(i)

 

值转换成列表

dic = {"name": "jin", "age": 18, "sex": "male"} l_values = list(dic.values()) print(l_values)

 

 分别赋值

a, b = 1, 2 print(a, b)

 

 

a, b = ('alex', '34') print(a, b)

 

 

a, b = ['alex', '34'] print(a,b)

 

  有如下:

    a = 1

    b = 3

  用一行代码实现a b值互换。

a = 1 b = 3 a, b = b, a print(a, b)

 

 

for i in [22, 33, 44]: print(i)

 

 

for i in [(11, 22), (33, 44), (55, 66)]: print(i)

 

 

k, v = ('name', '老男孩') print(k, v)

 

 

dic = {"name": "jin", "age": 18, "sex": "male"} for k, v in dic.items(): print(k, v)

 

 

字典的嵌套

  原始字典dic

dic = { 'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': { 'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头'], } }

添加键值对

  学校:老男孩

dic = { 'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': { 'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头'], } } dic['学校'] = '老男孩' print(dic)

 

 嵌套字典的修改

  将status对应的值改为True。

dic = { 'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': { 'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头'], } } dic['status'] = True print(dic)

 

 嵌套字典元素追加

  给name_list追加一个元素‘平平’。

dic = { 'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': { 'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头'], } } dic['name_list'].append('平平') print(dic)

 

 嵌套字典添加键值对

  给personal_msg对应的字典添加一个键值对sex:男。

dic = { 'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': { 'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头'], } } dic['personal_msg']['sex'] = '男' print(dic)

 

 嵌套字典修改

  将hobby_list对应的列表中的烫头改成唱歌。

dic = { 'name_list': ['碗蓉', '俊俊', '爽妹'], 'status': None, 'personal_msg': { 'name': '反面教材', 'age': 25, 'hobby_list': ['抽烟', '喝酒', '烫头'], } } dic['personal_msg']['hobby_list'][-1] = '唱歌' print(dic)

 

 

转载于:https://www.cnblogs.com/ZN-225/p/9587957.html

最新回复(0)