Python教程

Python基础(字典)

本文主要是介绍Python基础(字典),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Python基础(字典)

什么是字典

  • Python内置的数据结构之一,与列表一样是一个可变序列
  • 以键值对的方式存储数据,字典是一个无序的序列
scores={'张三':100,'李四':98,'王五':45}

字典名:scores

‘张三’ 键 ; 100 值

第一个放进字典的键不一定是放在第一个位置,位置是通过hash值来决定的

理解什么是不可变序列和可变序列

举例子:不可变序列:整数 和字符串

可变序列:目前学的:列表和字典

字典的实现原理

  • 字典的实现原理与查字典类似,查字典是先根据不受或者拼音查找相应的页码,Python中的字典是根据key查找value所在的位置

字典的创建

  • 最常见的方式:使用花括号

    • '''
      使用{}创建字典
      '''
      scores={'张三':100,'李四':98}
      print(scores)
      print(type(scores))
      
    • 输出:

    • {'张三': 100, '李四': 98}
      <class 'dict'>
      
  • 第二种方式: dict()

    • '''
      第二种方式dict()
      '''
      student= dict(name='jack',age=20)
      print(student)
      print(type(student))
      

      输出:

      {'name': 'jack', 'age': 20}
      <class 'dict'>
      

字典的常见操作

字典元素的获取

print('-----------获取字典的元素----------')
scores={'张三':100,'李四':98,'王五':45}
'''第一种方式,使用[]'''
print(scores['张三'])
print(scores['陈六'])

输出:

-----------获取字典的元素----------
100
    print(scores['陈六'])
KeyError: '陈六'

第二种:

'''第二种方式'''
print(scores.get('张三'))
print(scores.get('陈六')) #None 这种不会报错
print(scores.get('麻七',99))  #99是获取不到时的替代品

输出:

100
None
99

字典元素的增删改查

key的判断

​ key的判断:

  • in 指定的key在字典里存在返回True -> ‘张三’ in scores
  • not in 指定的key在字典中不存在返回True -> ‘Marry’ not in scores
print('-----key的判断----')
scores={'张三':100,'李四':98,'王五':45}
print('张三' in scores)
print('张三' not in scores)

输出:

-----key的判断----
True
False

字典元素的删除

  • del scores[‘张三’]
del scores['张三'] #删除指定的key-value 对
print(scores)

输出:

{'李四': 98, '王五': 45}

张三没了

字典的晴空

scores.clear()

print('-----字典的清空----')
print(scores)
scores.clear()
print(scores)

输出:

-----字典的清空----
{'李四': 98, '王五': 45, '陈六': 112}
{}

字典元素的新增

  • scores[‘Jack’]=90
print(scores)
scores['陈六'] = 115
print(scores)

输出:

{'李四': 98, '王五': 45}
{'李四': 98, '王五': 45, '陈六': 115}

字典元素的修改

scores[‘陈六’]=112

print('----修改元素----')
print(scores)
scores['陈六']=112
print(scores)

输出:

----修改元素----
{'李四': 98, '王五': 45, '陈六': 115}
{'李四': 98, '王五': 45, '陈六': 112}

获取字典视图的三个方法

获取字典视图

  • keys() 获取字典中所有key

    print('----字典的视图操作----')
    scores={'张三':100,'李四':99,'王五':88}
    #获取所有的key
    keys=scores.keys()
    print(keys)
    print(type(keys))
    aa= list(keys) #将所有keys组成的视图转换成列表并赋值给aa
    print(type(aa))
    print(aa)
    

    输出:

    ----字典的视图操作----
    dict_keys(['张三', '李四', '王五'])
    <class 'dict_keys'>
    <class 'list'>
    ['张三', '李四', '王五']
    
  • values() 获取字典中的所有value

    print('----获取字典的所有value----')
    values= scores.values()
    print(values)
    print(type(values))
    print(list(values))
    

    输出:

    ----获取字典的所有value----
    dict_values([100, 99, 88])
    <class 'dict_values'>
    [100, 99, 88]
    
  • items() 获取子弹中所有的key,value对

    print('----获取所有的key-value对')
    items=scores.items()
    print(items)
    print(list(items))  #转换之后列表元素是由元祖组成
    

    输出:

    ----获取所有的key-value对
    dict_items([('张三', 100), ('李四', 99), ('王五', 88)])
    [('张三', 100), ('李四', 99), ('王五', 88)]
    

字典元素的遍历

for item in scores:

​ print(item)

print('----字典元素的遍历----')
scores={'张三':100,'李四':99,'王五':88}
for item in scores:
    print(item,scores[item],scores.get(item))

输出:

----字典元素的遍历----
张三 100 100
李四 99 99
王五 88 88

字典的特点

  • 字典中的所有严肃都是一个key-value对,key 不允许重复,value可以重复

    print('----字典的特点----')
    d={'name':'张三','name':'李四'}
    print(d)
    

    输出:

    ----字典的特点----
    {'name': '李四'}
    
  • d={'name':'lisi','bigname':'lisi'}
    print(d)
    

    输出:

    {'name': 'lisi', 'bigname': 'lisi'}
    

    证明value可以重复

  • 字典中的元素是无序的

    靠hash值决定位置

  • 字典中的键必须是不可变对象

    • lst=[10,20,30]
      d1={lst:100}
      print(d1)
      

      报错:

          d1={lst:100}
      TypeError: unhashable type: 'list'
      

    因为这个lst是可变对象,不允许计算hash值

  • 字典也可以根据需要动态地伸缩

    • 使用之前不需要分配多大空间,会根据大小自动分配空间
  • 字典会浪费较大的内存,是一种使用空间换时间的数据结构

    • 一开始就有一定大小,刚开始不满的时候,有很多空的地方

字典的生成式

内置函数zip()

  • 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元祖,返回返回由这些元祖组成的列表

    print('----字典生成式----')
    items=['Fruits','Books','Others']
    prices=[96,98,88]
    
    d = {item:price  for item,price in zip(items,prices)}
    print(d)
    

    输出:

    ----字典生成式----
    {'Fruits': 96, 'Books': 98, 'Others': 88}
    

    其实就是一个列表的元素做键,一个列表的元素做值,并且是按照顺序来

这篇关于Python基础(字典)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!