python编程字典100例_21天学习python编程_字典

小目标:掌握字典相关知识点

主要内容:

1.理解字典;

2.字典遍历;

3.字典常用方法;

如果看完这篇文章,你还是弄不明白字典;

你来找我,我保证不打你,我给你发100的大红包。

1.字典基础

1.1 神马是字典?

字典是Python中唯一映射性数据结构,{key:value},且key是唯一的,value可以使任意对象;

字典是一种无序的数据结构;

结构如下:

{k1:v1,k2:v2,....kn:vn}

1.2 字典定义

d1 = {‘a‘:97, ‘b‘:98}

d2 = {‘name‘:‘sun‘,‘age‘:10}

print(d1)

print(d2)

结果:

{‘a‘: 97, ‘b‘: 98}

{‘name‘: ‘sun‘, ‘age‘: 10}

1.3 字典访问

使用key访问元组

d = {1: 2, 3: 4}

print(d)

#key:1,对应的值

print(‘d[1]:‘,d[1])

结果:

{1: 2, 3: 4}

d[1]: 2

1.4 字段修改

使用key修改或者增加元素

d = {1: 2, 3: 4}

d[1]=10

print(d)

d[‘5‘] = ‘five‘

print(d)

结果:

{1: 10, 3: 4}

{1: 10, 3: 4, ‘5‘: ‘five‘}

1.5 字典实质:

字典结构:不是k->v,而是:hash(k)->v

理解:先将key左hash处理,生成一个字符串ID,然后这个ID对应v

注意点:只有不可变数据结构才可以hash,例如:数字,元组,字符串,列表不可以。

例如:

#key是一个列表

d1 = {[1]:1}

错误:TypeError: unhashable type: ‘list‘

1.6 字典中key必须是唯一的

示例:

d = {1:1,1:‘one‘}

print(d)

d1 = {1:‘one‘,1:1}

print(d1)

结果,最后一个有效:

{1: ‘one‘}

{1: 1}

1.7 dict创建字典

dict函数:

dict():创建空字典

dict(mapping):创建字典

#dict方法,每个列表中元素为可迭代对象,每个对象只有两个元素,

#注意:第一个元素必须可以hash

d1 = dict([[‘name‘,‘sun‘],[‘score‘,90]])

print(d1)

#列表每个元素为元组,元组只有两个元素

d3 = dict([(1,2),(3,4)])

print(d3)

#列表每个元素为字符串,字符串只能有两个字符

d2 = dict([‘12‘,‘34‘])

print(d2)

#元组每个元素为列表,列表只能有两个元素

d4 = dict(([‘name‘,‘li‘],[‘score‘,91]))

print(d4)

结果:

{‘name‘: ‘sun‘, ‘score‘: 90}

{1: 2, 3: 4}

{‘1‘: ‘2‘, ‘3‘: ‘4‘}

{‘name‘: ‘li‘, ‘score‘: 91}

2 字典相关操作:

2.1 常用函数

len(obj, /):返回字典长度

sum(iterable, start=0, /):对字典所有value求和,value必须支持加法操作且是一种类型对象

max(iterable, *[, default=obj, key=func]):获取字典value中最大值

in:key in d,判断key是否在d中,存在返回True,否则返回False

示例:

d = dict([(1,2),(3,4)])

print(‘len(d):‘,len(d))

print(‘sum(d):‘, sum(d))

print(‘max(d):‘, max(d))

结果:

len(d): 2

sum(d): 4

max(d): 3

2.2 字典遍历

d = dict([(1,2),(3,4)])

#获取字典所有key

for key in d:

print(key)

#遍历字典:

for key in d:

print(key,d[key])

3. 字典相关方法

3.1 fromkeys

dict.fromkeys(iterable, value=None, /):根据序列创建字典,每个字典值为value

示例:

keys = ‘abcd‘

#字典value默认为None

d = dict.fromkeys(keys)

print(d)

#字典value默认为-1

d = dict.fromkeys(keys,-1)

print(d)

结果:

{‘a‘: None, ‘b‘: None, ‘c‘: None, ‘d‘: None}

{‘a‘: -1, ‘b‘: -1, ‘c‘: -1, ‘d‘: -1}

3.2 获取字典相关值

方法

说明

D.keys()

获取字典所有Keys,

D.values()

获取字典所有values,

D.items()

获取字典每个item

示例:

d = dict([(‘name‘,‘sun‘), (‘age‘,18)])

#获取keys,keys为可迭代对象

print(d.keys())

#获取values,values为可迭代对象

print(d.values())

#获取每个item

print(d.items())

#遍历kv

for k,v in d.items():

print(f‘{k}:{v}‘,end=‘,‘)

结果:

dict_keys([‘name‘, ‘age‘])

dict_values([‘sun‘, 18])

dict_items([(‘name‘, ‘sun‘), (‘age‘, 18)])

name:sun,age:18,

3.3 获取字典key对应的值

一般方式:d[key],问题,如果key不在d中报错

dict.get(key, default=None, /):获取key对应值,不存在返回default

推荐使用dict.get方法获取key对应的值

示例:

d = dict([(‘name‘,‘sun‘), (‘age‘,18)])

print(‘name:‘, d.get(‘name‘, ‘unknow‘),‘sex:‘, d.get(‘sex‘, ‘unknow‘))

结果:name: sun sex: unknow

3.5:setdefault方法

dict.setdefault(self, key, default=None, /):如果key存在,返回key对应的值,否则字典中添加元素,key:defatult

示例:

d = {1: 2, 3: 4}

print(d.setdefault(1,‘one‘))

#d并没有改变

print(d)

#增加新的元素

d.setdefault(‘one‘, 1)

print(d)

结果:

2

{1: 2, 3: 4}

{1: 2, 3: 4, ‘one‘: 1}

3.6 字典删除

D.pop(k[,d]):返回并删除k对应的元素,如果k在dict中不存在且设置d,返回d,否则报异常

D.popitem():返回一组k-v,并删除

D.clear():清空字典

示例:

d = dict.fromkeys(‘1234‘, -1)

print(d)

print(‘pop(1):‘,d.pop(‘1‘))

#删除一组元素

print(d.popitem())

#清空字典

d.clear()

print(d)

结果:

{‘1‘: -1, ‘2‘: -1, ‘3‘: -1, ‘4‘: -1}

pop(1): -1

(‘4‘, -1)

{}

3.7 字典更新

D.update([E, ]**F),E为字典,F为可迭代对象(k,v)

操作结果:for k in E: D[k] = E[k]

示例

d = dict.fromkeys(‘1234‘, -1)

print(d)

d1 = {‘1‘:‘one‘, ‘5‘:‘five‘}

d.update(d1)

print(d)

结果:

{‘1‘: -1, ‘2‘: -1, ‘3‘: -1, ‘4‘: -1}

{‘1‘: ‘one‘, ‘2‘: -1, ‘3‘: -1, ‘4‘: -1, ‘5‘: ‘five‘}

以上就是字典常用的操作;

总结重点:

字典一种无序的映射性数据结构;

理解key的处理,及hash

字典遍历方式

原文地址:https://blog.51cto.com/huangyg/2512119

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值