重温Python基础——字典
哈喽小伙伴们,今天咱们来复习一下Python
基础中的字典,看看还记得多少!
在python
中,字典是一系列键值对。每个键都与一个值相关联,你可使用键值来访问相关联的值。与键相关联的值可以是数、字符串、列表、乃至字典。其实,可以将任何python
对象用作字典的值。
在python
中字典放在花括号 { } 内的一系列键值对表示例如:
a = {"animal":"panda","plant":"rose","point":9}
获取与键关联的值,可以依次指定字典名或放在方括号内的值
例如提取出上述字典中的panda
a = {"animal":"panda","plant":"rose","point":9} print(a["animal"])
运行结果
panda
字典是一种动态结构,可随时在其中添加键值对。如需添加键值对,可依次指定字典名、用方括号括起的键和相关键的值。
下列尝试在字典中添加country:China
a = {"animal":"panda","plant":"rose","point":9} print(a) a["country"] = "China" print(a)
运行结果
{'animal': 'panda', 'plant': 'rose', 'point': 9} {'animal': 'panda', 'plant': 'rose', 'point': 9, 'country': 'China'}
如果需要修改字典中的值,可以一次的指定字典名、用方括号括起的键,以及改键相关联的新值
例如我们更改上述程序的熊猫
a = {"animal":"panda","plant":"rose","point":9} print(a) a["animal"] = "little bear" print(a) # Python资料源码自取群 708525271
运行结果
{'animal': 'panda', 'plant': 'rose', 'point': 9} {'animal': 'little bear', 'plant': 'rose', 'point': 9}
对于字典中不需要的信息,留之无用。可以使用del语句将相对应的键值进行删除。其中必须指定字典名和要删除的键。
例如删除字典a
中的键"plant"
及其值
a = {"animal":"panda","plant":"rose","point":9} print(a) del a["plant"] print(a)
运行结果
{'animal': 'panda', 'plant': 'rose', 'point': 9} {'animal': 'panda', 'point': 9}
使用放在方括号内的键从字典中获取感兴趣的值时,有时会因为指定的键值不存在而引发错误。
例如你想在字典a
中获取里面不存在的信息将会报错
a = {"animal":"panda","plant":"rose","point":9} print(a["color"])
运行结果
Traceback (most recent call last): File "C:\Users\Desktop\python\03.py", line 77, in <module> print(a["color"]) KeyError: 'color'
对于字典而言,可使用方法get()
在指定的键不存在时返回一个默认值,从而避免这样的错误。
例如:
a = {"animal":"panda","plant":"rose","point":9} b=a.get("color","no color value assigend.") print(b)
运行结果
no color value assigend.
如果键中有color
,将打印与其相关的值,如果没有,将获得指定的默认值。这里随没有键“color
”但可以获得一条消息,这里不会出错。
python
中一个字典可以包含几个值,同样也可以包含数百万个键值对。字典可以以各种方式存储信息,因此有多种遍历方式。可以遍历字典的键值对,也可以只遍历键或值。
遍历所有键值对:
前面介绍过,我们可以逐一的访问任意一项,但如果字典所含有成百上千对键值对,怎么办?我们可以使用for
循环来遍历这个字典:
a = {"animal":"panda","plant":"rose","point":9} for key,value in a.items(): print(f"\nkey:{key}") print(f"value:{value}")
运行结果
key:animal
value:panda
key:plant
value:rose
key:point
value:9
要编写需要遍历for
循环中,可分别声明键和值两个变量,变量名可自定义。
遍历字典中的所有键
在不使用字典中的值时,方法keys()
很有用。
我们对字典所包含的值感兴趣时方法value()
返回一个值的列表不包含键。
a = {"animal":"panda","plant":"rose","point":9} print(a) print("\n键:") for key in a.keys(): print(key) print("\n值:") for value in a.values(): print(value)
运行结果
键:
animal
plant
point
值:
panda
rose
9
其实使用方法与遍历字典有很大相似性
有时候,需要将一系列字典的值存储在列表中,或者将列表作为值存储在字典中,这称为嵌套。
比如说字典存放在着一个同学的信息,但是无法存放第二个同学的信息。如何管理这群同学的信息呢?一种方法就是创建一个同学的列表,其中每个同学都是一个字典。
zhangsan = {"heigh/cm":169,"weight/kg":55,"hobby":"read"} lisi = {"heigh/cm":175,"weight/kg":65,"hobby":"game"} wangwu = {"heigh/cm":163,"weight/kg":57,"hobby":"dance"} students = [zhangsan,lisi,wangwu] for student in students: print(student) # Python资料源码自取群 708525271
运行结果
{'heigh/cm': 169, 'weight/kg': 55, 'hobby': 'read'} {'heigh/cm': 175, 'weight/kg': 65, 'hobby': 'game'} {'heigh/cm': 163, 'weight/kg': 57, 'hobby': 'dance'}
有时候,需要将列表存于字典中。例如你如何描述顾客点的鸡排呢?如果使用列表,只能存储添加的鸡排信息。但如果使用字典,就不仅仅可在其中包含的配料列表。还可以包含其他对鸡排的所有描述。
jipai = { "辣度":["微辣","中辣","特辣"], "番茄酱":["需要","不需要"] } print(jipai) # Python资料源码自取群 708525271
运行结果
'辣度': ['微辣', '中辣', '特辣'], '番茄酱': ['需要', '不需要']}
每当字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
可在字典中嵌套字典,但这样做,代码很快复杂起来。如果有多个网站用户,每一个的用户名都不一样。可在字典中将用户名作为键,然后将每一个用户的信息的存储在一个字典里,并将这个字典作为该用户名键的值。
user = { "zhangsan":{ "sex":"female","hobby":"python" }, "追风少年":{ "sex":"male","hobby":"computergames" }, "孤独的夜":{ "sex":"male","hobby":"music" } } for username,users in user.items(): print(f"\nUsername:{username}") sex = users["sex"] hobby = users['hobby'] print(f"\tsex:{sex}") print(f"\thobby:{hobby}")
运行结果
Username:zhangsan
sex:female
hobby:python
Username:追风少年
sex:male
hobby:computergames
Username:孤独的夜
sex:male
hobby:music
请注意,表示每一位用户的字典的有相同的结构。虽然在python
中没有这么要求,但这样会是的嵌套在字典中使用起来更方便。如果键值都不相等,那么for
循环在此用起来会十分的复杂!