快捷搜索:  汽车  科技

在python中字典的基本操作有三种:每日一课你知道和不知道python字典都在这

在python中字典的基本操作有三种:每日一课你知道和不知道python字典都在这a = {'name': 'Lucy' 'age': 18 'job': 'programmer'} print(a['name']) # Lucy print(a['sex']) # 报错 2.通过get()方法获得“值”。推荐使用。优点是:指定键不存在,返回None;也可以设定指定键不存在时默认返回的对象。推荐使用get()获取“值对象”。 #方式一:{key:value} # {key: value} dict1 = {'one': 1 'two': 2 'three': 3} print(dict1) #方式二:dict() # dict(zip(keys values)) # 或dict([(k v)

【导语】:你是否了解Python字典 以及创建Python字典都有哪些的实际的应用操作 还有如何访问字典中的值等等 此文章就是针对这些问题 给出超出你预期的答案。

本文从七个方面介绍字典,包括:字典创建的5种方式、访问字典元素、字典元素添加、字典元素删除、字典的排序、字典的其他方法、序列解包(拆包)。

字典

字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。

列表中我们通过“下标数字”找到对应的对象。字典中通过“键对象”找到对应的“值对象”。

“键”:是任意的不可变数据,比如:整数、浮点数、字符串、元组。但是:列表、字典、集合这些可变对象,不能作为“键”。并且“键”不可重复。不清楚可变类型与不可变类型

“值”:可以是任意的数据,并且可重复。

在python中字典的基本操作有三种:每日一课你知道和不知道python字典都在这(1)

空字典表示方式:{}或dict()

1.创建字典

#方式一:{key:value} # {key: value} dict1 = {'one': 1 'two': 2 'three': 3} print(dict1) #方式二:dict() # 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) #方式三:dict(key=value) # dict(key=value) dict4 = dict(one=1 two=2 three=3) print(dict4) #方式四:字典推导 # 字典推导式 lst1 = ['one' 'two' 'three'] lst2 = [1 2 3] dict5 = {lst1[i]: lst2[i] for i in range(len(lst1))} print(dict5) 方式五:fromkeys() # 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'} 2.访问字典元素

#定义一个字典 a = {'name': 'Lucy' 'age': 18 'job': 'programmer'}

1.通过[键]获得“值”。若键不存在,则抛出异常。

a = {'name': 'Lucy' 'age': 18 'job': 'programmer'} print(a['name']) # Lucy print(a['sex']) # 报错

2.通过get()方法获得“值”。推荐使用。优点是:指定键不存在,返回None;也可以设定指定键不存在时默认返回的对象。推荐使用get()获取“值对象”。

a = {'name': 'Lucy' 'age': 18 'job': 'programmer'} print(a.get('sex' '不存在此键')) # 不存在此键

3.列出所有的键值对。

for k v in a.items(): print(k v)

4.列出所有的键,列出所有的值。

for k in a.keys(): print(k) for v in a.values(): print(v)

5.检测一个“键”是否在字典中。

print('name' in a) # True 3.字典元素添加

给字典新增“键值对”。如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。

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} 4.字典元素删除

#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() #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'} 5.字典的排序

dts = dict(a=3 b=2 c=1) dts # 按照键排序 dts = sorted(dts.items() key=lambda x:x[0] reverse=True) # 按照值排序 dts = sorted(dts.items() key=lambda x:x[1] reverse=True) dts 6.字典的其他方法① 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) ② collections

# 实现键保留 值相加 from collections import defaultdict d = defaultdict(int) objs = [{'F29958SVDK6': 12} {'F29958SVDK5': 12} {'F29958SVDK6': 12} {'F29958SVDK6': 12} {'F29958SVDK6': 12}] for obj in objs: for key value in obj.items(): d[key] = value print(d) 7.序列解包(拆包)

序列解包可以用于元组、列表、字典,可以让我们方便地对多个变量赋值。

>>> 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

猜您喜欢: