python字典

本文介绍了Python字典这一映射数据结构,强调了键必须是可哈希类型,不能为列表。讨论了字典的增、删、改、查、更新等操作,包括pop()、clear()、setdefault()、get()、update()等方法,并提供了字典练习题,涉及遍历字典、添加和修改键值对、操作列表值等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型。
  注意,浮点数比较很不精确,因此千万不要用浮点数作为key!
  python字典包含了11个内置方法,具体如下:
  在这里插入图片描述
1,字典的键不能是list类型:

list = [1,2,3,4]
info2 = {list:'number'}
 
结果:
Traceback (most recent call last):
  File "D:/字典.py", line 2, in <module>
    info2 = {list:'number'}
TypeError: unhashable type: 'list'

2,list/set/dict 均不可被哈希,int、float、str、tuple:是可以哈希的

1 list.__hash__;
    #结果为None
2 set.__hash__;
    #结果为None
3 dict.__hash__;
    #结果为None
4 print(int.__hash__);
    # <slot wrapper '__hash__' of 'int' objects>
5 print(float.__hash__);
    #<slot wrapper '__hash__' of 'float' objects>
6 print(str.__hash__); 
    #<slot wrapper '__hash__' of 'str' objects>
7 print(tuple.__hash__);
    #<slot wrapper '__hash__' of 'tuple' objects>

3,增

 info ={'name':'jamnes','age':'32','work':'basketplayer'}
info['sex'] = 'fale'
print(info)
结果:
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'sex': 'fale'}

4,删
4-1 pop():删除指定key的键值对

info ={'name':'jamnes','age':'32','work':'basketplayer'}
info.pop('work')
print(info)
结果:
{'name': 'jamnes', 'age': '32'}

4-2 clear():清除所有的键值对

info ={'name':'jamnes','age':'32','work':'basketplayer'}
info.clear()
print(info)
结果:
{}

4-3setdefault():删除指定的元素,如果没有,则返回none

info ={'name':'jamnes','age':'32','work':'basketplayer'}
info.setdefault('son')
print(info)
结果:
None

5,改

info ={'name':'jamnes','age':'32','work':'basketplayer'}
info['age']='33'
print(info)
结果:
{'name': 'jamnes', 'age': '33', 'work': 'basketplayer'}

6,查
6-1 get():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None

info ={'name':'jamnes','age':'32','work':'basketplayer'}
a =info.get('age')
print(a)
结果:
32

6-2 setdefault():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None,
同时在字典中增加’test’: None键值对

info ={'name':'jamnes','age':'32','work':'basketplayer'}
a =info.setdefault('age')
print(a)
print(info)
b =info.setdefault('sex')
print(b)
print(info)
 
结果:
32
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer'}
None
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'sex': None}

7,更新
7-1update()=

一,更新里面有的信息,就是改变
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info2 = {'name':'wade','age':'33','work':'basketplayer'}
info.update(info2)
print(info)
结果:
{'name':'wade','age':'33','work':'basketplayer'}
 
二,更新里面没有的信息,就是添加
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info2 = {'honor':'3 champions'}
info.update(info2)
print(info)
结果:
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'honor': '3 champions'}

8,返回键,值,键值对
  keys():以列表(list)返回字典中的所有键(key),字典是无序的,所以这个list返回的不是定义字典的顺序
  values():以列表(list)返回字典中的所有值,这个list的顺序跟keys()返回的list顺序是一一对应的
  items():以列表(list)返回可遍历的(键, 值) 元组数组,这个tuple的list包含了dictionary的所有数据

dict ={'k1':'v1','k2':'v2','k3':'v3'}
#1,请循环遍历除所有的key
for keys in dict.keys():
    print(keys)
 
#遍历出所有的value
for value in dict.values():
    print(value)
 
#遍历出
for key,value in dict.items():
    print(key+':'+value)<br>#结果:<br>k1<br>k2<br>k3<br>v1<br>v2<br>v3<br>k1:v1<br>k2:v2<br>k3:v3

9,练习字典
  dic={‘k1’:“v1”,“k2”:“v2”,“k3”:[11,22,33]}
  a.请循环输出所有的key
  b.请循环输出所有的value
  c.请循环输出所有的key和value
  d.请在字典中添加一个键值对,“k4”:“v4”,输出添加后的字典
  e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典
  f.请在k3对应的值中追加一个元素44,输出修改后的字典
  g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典

dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
#   a.请循环输出所有的key
for i in dic :
    print(i)
for i in dic.keys():
    print(i)
#   b.请循环输出所有的value
for i in dic.values():
    print(i)
  c.请循环输出所有的key和value
for i,j in dic.items():
    print(i,j)
#   d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典
dic2 = {'k4':'v4'}
dic.update(dic2)
print(dic)
dic['k4'] = 'v4'
print(dic)
 
#   e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典
dic['k1'] ='alex'
print(dic)
  f.请在k3对应的值中追加一个元素44,输出修改后的字典
dic['k3'].append(44)
print(dic)
#   g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典
dic['k3'].insert(0,18)
print(dic)

10,根据字典的键值进行排序 
反序: reverse = True

mylist = ['学习', '工作', '玩耍', '学习', '工作', '工作']
print(mylist)
# list_element 是另外一个列表,里面的内容是list_element里面的无重复项
myset = set(mylist)
 
mydict = {}
 
for item in myset:
    res = mylist.count(item)
    sample = {item: res}
    # print(res)
    # print("the %d has found %d" % (item, mylist.count(item)))
    mydict.update(sample)
print(mydict)
print(sorted(mydict.items(), key=lambda mydict:mydict[1],reverse=True))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值