21天学习python编程_字典

2021-04-12 12:29

阅读:531

标签:head   相关   def   ppi   说明   字符串   type   The   ror   

主要内容:
  • 小目标:掌握字典相关知识点
  • 主要内容:

    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
  • 字典遍历方式

21天学习python编程_字典

标签:head   相关   def   ppi   说明   字符串   type   The   ror   

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


评论


亲,登录后才可以留言!