关于字典

it2022-05-08  12

不可变类型:数字,字符串,元组

可变类型:列表,字典

字典的键必须为不可变类型,键值可以是任意类型

字典的两大特点:无序(输出时顺序不一定按照创建时的顺序输出),键唯一;

 

创建字典:

1 dic={ 'name':'chen' , 'age':23 , 'birthday':'1996.9.23' , (1,2,3):[1,2,3] } 2 dic2=dict((('name','chendong'),('age',23)))还可以通过关键字创建字典3 dic3=dict(name='chendong',age='23')  #注意这里的键值没有引号

 

字典的操作

dic1={'name':'chen','age':23}

 

增加:

1.

dic1['birthday']='1996.9.23'

 

2.

ret=dic1.setdefault('name','abc')  print(dic1) #输出{'name':'chen','age':23},若键存在,则不添加  print(ret) #输出‘chen’,返回结果为原来的键值  ret2=dic1.setdefault('hobby','play') #输出{'name':'chen','age':23,‘hobby’:'play'},若键不存在,则添加新键  print(ret2) #输出'play',返回结果为新的键值

 

 

查找:

1.

print(dic1['name']) #输出‘chen’

 

2.

print(dic1.keys()) #返回所有的键,类型为dict_keys,若要返回一个列表,则print(list(dic1.keys()))

 

3.

print(dic1.values()) #返回所有的键值,类型为dict_values

 

4.

print(dic1.items()) #以元组的形式返回所有的键值对 dict_items([('name', 'chen'), ('age', 23)])

 

5.get()方法 

get()方法返回指定键的值,如果值不再字典中,则返回默认值

语法如下:

dict.get(key,default=None)

此语法中dict代表指定字典,key代表字典中要查找的键,default代表指定键的值不存在时返回默认值。

student={'小明':1001,'小红':1002} print('小明的学号是:%s'%student.get('小明'))

使用其他方法试图访问字典中不存在的项时会出错,而get()方法不会

 

修改:

1.

dic1['name']='cd' print(dic1) #输出{'name':'cd','age':23}

 

2.update()方法

dic2={'name1':'chendo','age':'12'} dic1.update(dic2) print(dic1) #输出结果把字典dic2加到dic1上去,若dic2中有与dic1中相同的键名,则覆盖原来的键值

 

删除:

1.del

del dic1['name'] #删除dic1字典的name键值对

 

 

2.clear()方法

dic1.clear() #清空字典

 

 

3.pop()方法

ret=dic1.pop('name') print(ret) #输出由pop()方法返回的删除的键值 print(dic1) #输出删除当前键后的字典

 

 

4.popitem()方法

随机删除一个键值对,并以元组返回删除的键值对

 

 字典的格式化字符串:

使用字典(前提是只以字符串作为键)来格式化字符串:

>>> student={'小明':1,'小红':2,'小刚':3}>>> print('小明的学号是:%(小明)s,小刚的学号是:%(小刚)s'%student)小明的学号是:1,小刚的学号是:3

可见字典的格式化方式是在每个转换说明符的%字符后面加上用圆括号括起来的键,再跟上其他说明元素。

字典的其他常用方法及操作:

1.fromkeys()方法

dic=dict(fromkeys(['name1','name2','name3'],'chen')) print(dic)

#输出结果为{'name1': 'chen', 'name2': 'chen', 'name3': 'chen'}

但这个方法存在一些问题,涉及到深浅拷贝的问题,以后再讨论

 

2.字典的排序:

  sorted()函数

dic{2:'2',1:'1','3':'3'} print(sorted(dic)) #s输出[1, 2, 3]print(sorted(dic.values())) #输出['1', '2', '3']print(sorted(dic.items())) #输出[(1, '1'), (2, '2'), (3, '3')]

 

3.字典的遍历

(1)

dic={ 'name':'chen' , 'age':23 , 'birthday':'1996.9.23' , (1,2,3):[1,2,3] } for i in dic:   print(i)

输出:

nameagebirthday(1, 2, 3)

输出键,若想输出键值对,print(i,dic[i])

(2)

dic={ 'name':'chen' , 'age':23 , 'birthday':'1996.9.23' , (1,2,3):[1,2,3] } for i,v in dic.items():   print(i,v)

两种方法推荐用第一种,效率高

 

转载于:https://www.cnblogs.com/cjluchen/p/8453381.html

相关资源:字典生成器,生成密码字典

最新回复(0)