python 字典操作方法详解

发布时间:2022-04-24 09:38:44 人气:468 作者:多测师

  字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型。

  注意,浮点数比较很不精确,因此千万不要用浮点数作为key!

  一、字典的键不能是list类型:

  list = [1,2,3,4]

  info2 = {list:'number'}

  结果:

  Traceback (most recent call last):

  File "D:/字典.py", line 2, in

  info2 = {list:'number'}

  TypeError: unhashable type: 'list'

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

  1 list.__hash__;

  #结果为None

  2 set.__hash__;

  #结果为None

  3 dict.__hash__;

  #结果为None

  4 print(int.__hash__);

  #

  5 print(float.__hash__);

  #

  6 print(str.__hash__);

  #

  7 print(tuple.__hash__);

  #

  三、增

  info ={'name':'jamnes','age':'32','work':'basketplayer'}

  info['sex'] = 'fale'

  print(info)

  结果:

  {'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'sex': 'fale'}

  四、删

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

  nfo ={'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

python 字典操作方法详解

  五、改

  info ={'name':'jamnes','age':'32','work':'basketplayer'}

  info['age']='33'

  print(info)

  结果:

  {'name': 'jamnes', 'age': '33', 'work': 'basketplayer'}

  六、查

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

  八、返回键,值,键值对

  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)

  #结果:

  k1

  k2

  k3

  v1

  v2

  v3

  k1:v1

  k2:v2

  k3:v3

  九、练习字典

  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)

  十、根据字典的键值进行排序

  反序: 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))

  十一、OrderedDict 的使用

  在Python中,dict这个数据结构由于hash的特性,是无序的,这在有时候会给我们带来一些麻烦,幸运的时,在collections模块中为我们提供了 OrderedDict ,当你需要获取一个有序的字典对象时,试用它即可。

  python中的字典(dict)对象可使用“键”,“值” 对的形式存取值,但默认的内置类型字典中的元素是无序的。Collections模块下的OrderedDict类实现了对字典的排序,OrderedDict是dict的一个子类,实现了对字典排序的功能,下面看一下两者数据类型的对比。

  from collections import OrderedDict

  print('Normal Dictionary:')

  d = {}

  d['name'] = 'v1'

  d['age'] = 'v2'

  d['job'] = 'v3'

  d['address'] = 'v4'

  d1 = {}

  d1['job'] = 'v3'

  d1['address'] = 'v4'

  d1['name'] = 'v1'

  d1['age'] = 'v2'

  print(d)

  print(d1)

  print(d == d1)

  print('OrderedDict:')

  d2 = OrderedDict()

  d2['name'] = 'v1'

  d2['age'] = 'v2'

  d2['job'] = 'v3'

  d3 = OrderedDict()

  d3['job'] = 'v3'

  d3['age'] = 'v2'

  d3['name'] = 'v1'

  print(d2)

  print(d3)

  print(d2 == d3)

  输出结果:

  Normal Dictionary:

  {'name': 'v1', 'age': 'v2', 'job': 'v3', 'address': 'v4'}

  {'job': 'v3', 'address': 'v4', 'name': 'v1', 'age': 'v2'}

  True

  OrderedDict:

  OrderedDict([('name', 'v1'), ('age', 'v2'), ('job', 'v3')])

  OrderedDict([('job', 'v3'), ('age', 'v2'), ('name', 'v1')])

  False

  从结果来看,如果是普通的字典,即使传入的顺序不一样,但是依然是相同的字典;如果是OrderedDict ,传入的顺序不一样,那么得到的字典是不一样的。

  以上内容为大家介绍了python 字典操作方法详解,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线