字典

一、字典

1.结构介绍

在字典存放的每个元素都是一对儿键值对

在python中 字典通常被称为dict,键 称为key

字典中不可以存在相同的key,但是value可以

2.字典的基本操作

创建空字典

>>> dict1 = {}

>>> type(dict1)

<class 'dict'>       # dict 类型 就是字典

添加修改或更新字典内容

一、添加修改 ' = '

>>> dict1[ 'qwer' ] = 1

>>> dict1

{'qwer': 1}

>>> dict1[ 'li' ] = [ 1,3,5 ]     # 添加列表

>>> dict1

{'qwer': 1, 'li': [1, 3, 5]}

二、更新字典内容 ' update '

>>> dict1.update( { 'df':2 } )

>>> dict1

{ 'qwer': 1, 'li': [1, 3, 5], 'df': 2 }

>>> d6 = { 'name':'时辰' }

>>> dict1.update(d6)        # 添加d6 字典中的key和value

>>> dict1

{ 'qwer': 1, 'li': [1, 3, 5], 'df': 2, 'name': '时辰' }

注意:' = ' 和 ' update '

添加或更新字典的内容时,相同的key,它的值(value)会被新的值替代(覆盖)。

python-3.5+

>>> x = {'x':10}

>>> y = {'y':20}

>>> z = { **x,**y }

>>> z

{'x': 10, 'y': 20}

转换为字典

>>> d1 = [ ('1','q'),('2','w'),('3','e'),('4','r') ]

>>> dict2 = dict(d1)

>>> dict2

{'1': 'q', '2': 'w', '3': 'e', '4': 'r'}

>>> d2 = [ '1q','2w','3e','4r' ]

>>> dict3 = dict(d2)

>>> dict3

{'1': 'q', '2': 'w', '3': 'e', '4': 'r'}

>>> dict2 == dict3

True

>>> dict2  is  dict3

False

注意:这种转换类型中的每个元素都必须是成对出现的。


二、字典的key

key通常是字符串还可以是python中任意的不可变类型

哪些数据可以作为字典的key

• 布尔型 True 1  False 0

• 整型 100 200

• 浮点型 1.0 3.415

• 元组 (1,2,3)

• 字符串 'id_name'

• 列表是不能成为字典的key的


在python中可以通过 hash() 函数来验证数据是否能作为key

>>> hash(True)           # 布尔值

1                                             # 如果返回的是一个整数,它就可以作为字典的key

>>> hash(1.0)             # 浮点数

1

>>> hash(100)        #整数              

100

>>> hash( (1,2,3) )        # 元组

2528502973977326415

>>> hash( 'id_name' )        # 字符串

6419225711378090061

>>>

>>> hash( [1,2,3] )            #  列表,下面是报错信息

Traceback (most recent call last):

File "", line 1, in

TypeError: unhashable type: 'list'

>>>


key对应的value

>>> dict2

{'1': 'q', '2': 'w', '3': 'e', '4': 'r'}

>>> dict2['1']          # 这样使用,key必须存在,不然会报错               

'q'

>>> dict2.get('1')         # 获取到 '1' 对应的值(value)     

'q'

>>> v =  dict2.get('5')         # 获取dict2中key为' 5 '对应的值

>>> type( v )                 # key不存在字典中,则返回None

 <class 'NoneType'>      

>>> dict2.get('5','f')      # 同时查找两个, ' 5 ' 存在,则返回' 5 '对应的值

'f'                                       #  ' 5 ' 不存在,则返回后面指定的 ' f '


获取字典中的key

.keys()

>>> dict2

{'1': 'q', '2': 'w', '3': 'e', '4': 'r'}

>>> dict2.keys()             #  列出字典dict2中所有的key

dict_keys(['1', '2', '3', '4'])

>>> d3 = dict2.keys()

>>> list(d3)

['1', '2', '3', '4']

循环输出字典中的key

>>> for key in dict2.keys():

...    print(key)

...

1

2

3

4


获取字典中value

.values()

>>> dict2.values()

dict_values(['q', 'w', 'e', 'r'])

>>> d4 = dict2.values()      # 列出字典dict2中所有的value

>>> list(d4)

['q', 'w', 'e', 'r']

循环输出字典中的value

>>> for v in dict2.values():

...    print(v)

...

q

w

e

r


同时获取字典中的key和value

.items()

>>> dict2

{'1': 'q', '2': 'w', '3': 'e', '4': 'r'}

>>> dict2.items()

dict_items([('1', 'q'), ('2', 'w'), ('3', 'e'), ('4', 'r')])

循环输出字典中的key和value

>>> for k,v in dict2.items():

...    print(k,v)

...

1 q

2 w

3 e

4 r


key和value的判断

>>> x = {'x':10}    

>>> 'x' in x           #  判断'x' 是否是字典x中的keys()

True

>>> 'x' in x.keys()

True

>>> 'y' in x.values()      # 判断'y'是否存在于字典中的values()

False


删除和清空字典

删除指定的键值对

>>> d1

{'1': 'q', '2': 'w', '3': 'e', '4': 'r'}

>>> del d1['1']          #  从字典中删除key为'1'的键值对

>>> d1

{'2': 'w', '3': 'e', '4': 'r'}

>>> del d1             #  删除d1字典,字典自身从内存中删除

清空字典

>>> d2

{'1': 'q', '2': 'w', '3': 'e', '4': 'r'}

>>> d2 = {}      #  直接赋予空值

>>> d2

{}

>>> d3

{'1': 'q', '2': 'w', '3': 'e', '4': 'r'}

>>> d3.clear()    # 清空字典,字典还在,内容被清空

>>> d3

{}

.pop()            删除指定key的键值对,并返回key对应的值

>>> d5

{'2': 'w', '3': 'e', '4': 'r'}

>>> s = d5.pop('2')      #  删除d5中key为'2'的键值对, 并将返回值指定给s

>>> d5                                  

{'3': 'e', '4': 'r'}

>>> s                #  输出s,得到'w'

'w'

三、实现swith...case 语句

Python 中没有 switch … case 语句,这个问题Python之父龟叔表示这个语法过去没有,现在没有,以后也不会有。因为Python简洁的语法完全可以用 if … elif 实现。如果有太多的分支判断,还可以使用字典来代替。

例子一:

while True:

      print("输入q退出")

      num = input(">>>:")

      if num == '0':

            print("zero")

      elif num == '1':

            print('one')

      elif num == '2':

            print('two')

     elif num == 'q':

           print('退出')

           break

     else:

           print('请输入数字')


优化版

data = {

             '0':'zero',

             '1':'one',

             '2':'two',

}

while True:

       print("输入q退出")

       num = input(">>:")

       if num in data:

            print(data.get(num))

       elif num == 'q':

           break

      else:

           print('输入错误')

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、dict字典 1.概述 思考问题:保存多个学生的成绩list1 = [65,7,8,99,100]tuple1...
    郑元吉阅读 312评论 0 0
  • 一、break、continue和pass语句的使用 1.break 作用:跳出循环【直接跳出整个循环,继续执行循...
    墨雨love薏雪阅读 611评论 0 0
  • 一、元祖 1.什么是元祖 """使用()将多个元素括起来,多个元素之间用逗号隔开a.容器,可以同时存储多个数据,不...
    大漠判官1阅读 389评论 0 0
  • 目录:https://www.jianshu.com/p/863c446364a8 一、字典 1、字典是另一种可变...
    久遇_days阅读 164评论 0 3
  • 在秋风寂寥的日子里,努力寻找阴霾下的暖阳,今天的分和今天的光与影也都会很漂亮 独享一个人的时光,一抬头就看见春天,...
    偌汐阅读 29评论 0 0