<
>

python字典dict-创建&嵌套&查找&修改&多种遍历

2020-07-30 18:46:46 来源:易采站长站 作者:

字典 dict 用的好闪电提速
优点

通过哈希Hash算法,提高搜索能力。因此明显优于for循环

顺序?

每个键值对存储在hash值,地址里。没有顺序

因此无法使用下标访问

但是可通过dict_name[key_name]访问对应的value

dict操作

操作语法功能
dict_name = dict(key1 = value1,key2 = value2,...)
创建字典
dict_name[key]=value
往dict添加key-value
dict_name[key]
返回key对应的value
del dict_name[key]
删除字典中的key-value
key_name in dict_name
返回布尔值,判断key是否在dict中,只能查找key不能查找value

dict成员函数

成员函数功能
{}.copy()
复制
{}.fromkeys(iterable(可遍历的), value=None, /)
以iterable元素为key,指定value创建dict
{}.get(key_name)
查找key返回对应的value,如果没有key则自动创建value=None
{}.get(key_name,value)
添加key-value并且返回value
{}.items(),,,{}.keys(),,,{}.values()
返回可遍历的(key,value)keyvalue数组,无顺序但可遍历

定义法创建

dict = {key : value(object),key : value(object),....}

key:必须是可哈希类型,因为哈希算法必须知道如何把键的值转化为散列分布的整数

类型特点包括
可哈希类型只读int,float,str,tuple
不可哈希类型可修改dict, list

value:值可以是任意对象(包括字典构成嵌套)

#创建:
phonebook = {'A':'1111-2222','B':'2222-3333','C':'3333-4444','D':'4444-5555'}

#填加
phonebook['E']='5555-6666'

#打印
print(phonebook)


{'A': '1111-2222', 'B': '2222-3333', 'C': '3333-4444', 'D': '4444-5555', 'E': '5555-6666'}

dict函数 创建
dorothy = dict(name='dorothy',id='1003',age=26)
dorothy


{'name': 'dorothy', 'id': '1003', 'age': 26}

dict操作

操作语法功能
dict_name = dict(key1 = value1,key2 = value2,…)创建字典
dict_name[key]=value往dict添加key-value
dict_name[key]返回key对应的value
del dict_name[key]删除字典中的key-value
key_name in dict_name返回布尔值,判断key是否在dict中,只能查找key不能查找value

print(dorothy['name'])
dorothy['gender']='female'
del dorothy['id']print('name' in dorothy)
print(dorothy)

dorothy
True
{'name': 'dorothy', 'age': 26, 'gender': 'female'}

dict成员函数

成员函数功能
{}.copy()复制
{}.fromkeys(iterable(可遍历的), value=None, /)以iterable元素为key,指定value创建dict
{}.get(key_name)查找key返回对应的value,如果没有key则自动创建value=None
{}.get(key_name,value)添加key-value并且返回value
{}.items(),{}.keys(),{}.values()返回可遍历的(key,value)keyvalue数组,无顺序但可遍历

#复制
dorothyCopy = dorothy.copy()
print('dorothy dorothyCopy:',dorothy,'/',dorothyCopy)

#可遍历中创建
#直接调用dict的函数
d= dict.fromkeys(range(5),'unknow')
#告诉解释器,字典{}有个成员函数fromkeys。我调用了他来创建一个新的字典赋值给d1.原本的{}不发生改变
d1={}.fromkeys(range(5),'unknow')
print('d1[1] d[1]:',d1[1],'/',d[1])

#调用加创建
print('dorothyCopysName:',dorothyCopy.get('name'))
print('dorothyCopysSalary:',dorothyCopy.get('salary',1000))


dorothy  dorothyCopy: {'name': 'dorothy', 'age': 26, 'gender': 'female'} / {'name': 'dorothy', 'age': 26, 'gender': 'female'}
d1[1] d[1]: unknow / unknow
dorothyCopysName: dorothy
dorothyCopysSalary: 1000

遍历
print("dorothyCopy:",dorothyCopy)

#字典中遍历是在key里遍历
for x in dorothyCopy: #x是键key
print('key:',x,end=',')
print('n')

#dict_name.keys()返回所有的key,类型是dict_keys
print('keys:',dorothyCopy.keys())
print('type:',type(dorothyCopy.keys()))
print('n')

#键值对中遍历,键值对类型是tuple
for x in dorothyCopy.items():
print(x)

for key,value in dorothyCopy.items():#元组是一个序列,这是一个序列解包过程
print(key,'-',value)


dorothyCopy: {'name': 'dorothy', 'age': 26, 'gender': 'female'}
key: name,key: age,key: gender,

keys: dict_keys(['name', 'age', 'gender'])
type:

('name', 'dorothy')
('age', 26)
('gender', 'female')
name - dorothy
age - 26
gender - female



作者:upup的ycc

暂时禁止评论

微信扫一扫

易采站长站微信账号