python dict索引_python dict字典

day5 ~

在python中字典的使用方法与list有一定的共性,但是比较方便的下标(索引)方式在字典中无法使用,因为字典是无序的组合,在字典中的数据都是无序排列,利用下标无法获取元素,并且在3.5之前的版本中尤为明显,而在3.6之后官方更行后,排序有了一定的优化,但也没有明确表示字典会是有序的。

哈希的概念:在字典中有一种哈希表对应所有的键,只有键是不可变的类型才可以哈希,而可变的类型不可哈希

哈希表是用来在字典中利用二分法判断键的位置的时候将键先去

只有是不可变类型的数值才能哈希

不可变的类型有:str tuple int bool (可哈希)

可变的类型有:list dict (不可哈希)

字典的键必须是不可变数据类型,可哈希

字典的键值对可以是任何类型。

1 dic = {'ss':22,'dd':33,'gg':44,'jj':66,'kk':88}2 print(dic)3

4 #结果:

5 每次输出都是不一样的,没有顺序,所以无法使用索引

#dict的增删改查!

#增,在字典中有两种方法,一种是利用dic[' ']直接赋值,还有一种是利用dic.setdefault()直接添加:

1.setdfault方法:

dic = {'ss':22,'dd':33,'gg':44,'jj':66,'kk':88}

dic.setdefault('sa','hha')print(dic)#结果:{'ss': 22, 'kk': 88, 'sa': 'hha', 'gg': 44, 'jj': 66, 'dd': 33}

#在原有字典内部,添加之前判断添加的元素在字典中是否用有,无则添加,有则不变

dic.setdefault('sa','hha')

print(dic)#结果:{'ss': 22, 'kk': 88, 'sa': 'hha', 'gg': 44, 'jj': 66, 'dd': 33}

2.直接添加:

dic={'ss': 22, 'kk': 88, 'sa': 'hha', 'gg': 44, 'jj': 66, 'dd': 33}

dic['kk'] = 'aa'

print(dic)#结果:{'dd': 33, 'gg': 44, 'jj': 66, 'sa': 'hha', 'kk': 'aa', 'ss': 22}#直接添加

##在原有字典内部,添加之前判断添加的元素在字典中是否拥有,无则添加,有则覆盖

dic['kk'] = 'aaaaa'

print(dic)#结果:{'dd': 33, 'gg': 44, 'jj': 66, 'sa': 'hha', 'kk': 'aaaaa', 'ss': 22}

#删

1.在字典中删除方法有三种,1.pop删除方法,2.clear删除方法,3.del删除方法 4.popitem方法

1.pop方法:利用key来删除,没有默认删除,无则报错。

1 dic={'ss': 22, 'kk': 88, 'sa': 'hha', 'gg': 44, 'jj': 66, 'dd': 33}2 dic.pop('ss')3 print(dic)结果:{'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'}

dic.pop()

print(dic)结果:报错!!

#没有默认删除,因为字典是无序的。

dic.pop('meinv', '错了')#当不设定错误信息时,没有找到key就会报错,只有设定报错信息才会在报错的时候显示信息

print(dic)

2.clear方法:直接清空字典

1 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'}2 dic.clear()3 print(dic)#结果:{}

3,。del方法:删除或者利用键删除,没有找到key时就会报错

1 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'}2 del dic['jj']3 print(dic)#结果{'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'}

4 del dic['eeee']5 print(dic)#结果报错

4.popitem方法,随机删除一个数字

#popitem方法 随机删除#

#dic.popitem()#print(dic)

#改:

改的方法有直接修改和update修改。

1 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'}2 dic['jj'] = 888

3 print(dic)结果:{'jj': 888, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'}4 ##########################

5

6 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'}7 dic1={'kk':99}8 dic.update(dic1)#dic1当有相同key时直接覆盖添加,没有相同就直接添加入dic

9 print(dic)

#查:

在python中get方法以及key查询:

1 #get查询

2 dic={'jj': 66, 'dd': 33, 'gg': 44, 'kk': 88, 'sa': 'hha'}3 dic.get('jj')4 dic.get('dds','没有找到')#当没有查找到的时候将会报错。

5 print(dic)

其他方法: keys,valuse,ltems方法

1 #2 dic.keys() 字典中的所有key的值3 dic.valuse()字典中所有键值对4 dic.items()将字典所的key和键值对都编成元祖的模式输出5 都可以转换为list并用for循环转换出来。

#关于分别赋值:

1 #a,b =2,3

2 #a,b=b,a #分别赋值

3

4 #a = 2

5 #b = 3

6 #c = a

7 #a = b

8 #b = c

9 #print(a,b)

10

11 #在dic.item()用分别赋值的方法将所有的元祖取出来。

12 for a,b indic.items():13 print(a,b)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值