字典

一、字典

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('输入错误')

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,761评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,953评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,998评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,248评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,130评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,145评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,550评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,236评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,510评论 1 291
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,601评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,376评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,247评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,613评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,911评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,191评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,532评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,739评论 2 335

推荐阅读更多精彩内容

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