009.Python字典

Python 字典

1. 概述

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

dict = {"name":"Jentle","age":18,"height":182.5}
print(dict)#{'name': 'Jentle', 'age': 18, 'height': 182.5}

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

一个简单的字典实例:

#键必须是不可变的,如字符串、数字或元组
tup1 = ("123",1,1.2)
dict = {"name":"Jentle",2:18,tup1:182.5}
print(dict[2])#18
print(dict[tup1])#182.5

如果用字典里没有的键访问数据,会输出错误如下:

dict = {"name":"Jentle","age":18,"height":182.5}
print(dict["weight"])

#output:
Traceback (most recent call last):
  File "D:/Python/PythonCode/002PythonBasic/day002/00PythonNote.py", line 3, in <module>
    print(dict["weight"])
KeyError: 'weight'

防止字典里没有键访问报错,可以用get方法

dict = {"name":"Jentle","age":18,"height":182.5}
print(dict.get("weight",None))#output:None

2. 修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

dict = {"name":"Jentle","age":18,"height":182.5}
dict["age"] = 19 #更新
dict["weight"] = 75 #添加
print ("dict['age']: ", dict['age'])
print ("dict['weight']: ", dict['weight'])

3. 删除字典元素

能删单一的元素也能清空字典,清空只需一项操作。

显式删除一个字典用del命令,如下实例:

dict = {"name":"Jentle","age":18,"height":182.5}
print(dict) #{'name': 'Jentle', 'age': 18, 'height': 182.5}
del dict["age"]
print(dict) #{'name': 'Jentle', 'height': 182.5}
dict.clear() #清空字典
print(dict) #{}
del  dict #删除字典

4. 字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

  • 1.不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
dict = {"name":"Jentle","age":18,"height":182.5,"age":19}
print(dict) #{'name': 'Jentle', 'age': 18, 'height': 182.5}
  • 2.键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:
dict = {["name"]:"Jentle","age":18,"height":182.5,"age":19}
print("dict[]",dict["[name]"])

#output:

Traceback (most recent call last):
 File "D:/Python/PythonCode/002PythonBasic/day002/00PythonNote.py", line 2, in <module>
   dict = {["name"]:"Jentle","age":18,"height":182.5,"age":19}
 TypeError: unhashable type: 'list'

5. 字典内置函数&方法

序号 函数及描述 实例
1 len(dict)计算字典元素个数,即键的总数。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> len(dict) 3
2 str(dict)输出字典,以可打印的字符串表示。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> str(dict)"{'Name': 'Runoob', 'Class': 'First', 'Age': 7}"
3 type(variable)返回输入的变量类型,如果变量是字典就返回字典类型。 >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}>>> type(dict)<class 'dict'>
dict = {"name":"Jentle","age":18,"height":182.5,"age":19}
print(len(dict)) # 3
dictStr = str(dict)
print(dictStr)
dictType = type(dict)
print(dictType)
#fromkeys
seq = ('Google', 'Runoob', 'Taobao')

dict = dict.fromkeys(seq)
print("dict.fromkeys(seq) : %s" % str(dict))#dict.fromkeys(seq) : {'Google': None, 'Runoob': None, 'Taobao': None}

dict = dict.fromkeys(seq, 10)
print("dict.fromkeys(seq, 10) : %s" % str(dict))#dict.fromkeys(seq, 10) : {'Google': 10, 'Runoob': 10, 'Taobao': 10}

#字典 get() 方法
dict = {"name":"Jentle","age":18,"height":182.5,"age":19}
value1 = dict.get("name","default")
value2 = dict.get("sex","未设置")
print("value1=",value1)#value1= Jentle
print("value2=",value2)#value2= 未设置

# 字典 items() 方法:以列表返回可遍历的(键, 值) 元组数组
dict = {"name":"Jentle","age":18,"height":182.5,"age":19}
v = dict.items()
print(type(v))#<class 'dict_items'>
print(v)#dict_items([('name', 'Jentle'), ('age', 19), ('height', 182.5)])
#遍历
for key,value in dict.items():
    print(key,":\t",value)
'''
name :   Jentle
age :    19
height :     182.5
'''
dict2 = {"weight":75,"address":"北京"}
dict.update(dict2)#方法没有任何返回值
print(dict)#{'name': 'Jentle', 'age': 19, 'height': 182.5, 'weight': 75, 'address': '北京'}

#删除字典给定键 key 所对应的值,返回值为被删除的值。
popObj = dict.pop("address")
print(popObj)#北京

6. 字典的遍历

字典支持for循环遍历,直接遍历字典得到的为字典的key

dict = {"a":"A","b":"B","c":"C"}
for i in dict:
    print(i)
#output:
a
b
c

当然也可以通过for循环遍历字典的items来遍历键值对

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

推荐阅读更多精彩内容

  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,734评论 0 10
  • 〇、前言 本文共108张图,流量党请慎重! 历时1个半月,我把自己学习Python基础知识的框架详细梳理了一遍。 ...
    Raxxie阅读 18,934评论 17 410
  • 晚上散步,锻炼锻炼身体,走在家门附近,一大波人流涌来,反应过来,高中晚自习下了,看着这些还有些稚嫩的学生的脸,不仅...
    会创造法则的创法阅读 280评论 0 0
  • 难受! 从早上鼻子不通气开始,到现在的嗓子疼到爆炸?我是不是该喝一瓶可乐! 早上一起打扫了下仓库,...
    童心童画可乐老师1553463阅读 114评论 0 0
  • 我的手机号用了十多年了,一直没换过。没有必要换。尤其是现在,各种保险啊,理财呀,物业呀,学校的联系呀等等牵涉到很多...
    两个栗子阅读 1,987评论 2 4