九、python 字典dict
字典 dict 相当于一组键值对。
一、字典的说明:
首先声明字典名,如dic1 。然后声明字典的内容。通过大括号引起,元素用逗号(,)分割,切字典的值可以为字符,列表,元祖,数字,布尔值等。
1、字典的键不可以是字典和列表。其余的都可以。包括元祖和布尔。
2、字典里面的键值对是没有顺序排列的。
3、字典的键重复不会报错,但是取到的值是最后一个重复的键的值。且不建议取重复键名。
例:
dic1 = { "old":12, "name":"陈司", "list1":[ 1, 2, 3, ("im","tuple") ], "dic2":{ "old":19, "name":"haha", } }
#如果取某一个值,比如"name": "陈司"
#方法应该是
print(dic1["name"])
#但是此处name定义了两次,所以只能取到最后一次定义的haha
运行结果
二、字典的使用。
1、删除字典元素。
与list 的删除方式是相同的,del 加字典名与键名即可。也可以用pop方法,删除的同事返回删除的键的所对应的值。该值可以用变量去接,也可以忽略。
dict.popitem() 是随机删除字典某一个键值对。
例:
dic1 = { "a": "12345", "b": "23456", "c": "34567", } print(dic1)
#删除 b 键 del dic1["b"] print(dic1)
运行结果
2、for 循环打印字典内容
默认只会打印出KEY,而不会打印出value
例:
dic1 = { "a": "12345", "b": "23456", "c": "34567", } for i in dic1: print(i)
运行结果
也可以指定打印key还是values ,通过字典自带的 keys() 和 values()方法即可。
也可以直接把键值对全部打印,方法是items()
例
dic1 = { "a": "12345", "b": "23456", "c": "34567", } for i in dic1.keys(): print(i) for i in dic1.values(): print(i) for i in dic1.items(): print(i)
3、dict.fromkeys(),该方法为静态方法。可以直接用dict类调用,不需要对象去调用。可以根据序列,创建一个字典,并赋相同的值。
例
v = dict.fromkeys(["陈司本人","陈司自己","陈司本尊"],"是大帅哥") print(v) for i in v.items(): print(i)
运行结果
4.dict.get()方法,传入键返回一个值。如果值不存在返回none,或者参数传两个,右边的参数会代替none 返回。
该方法,主要防止直接用dict["KEY"]的方式,出现key不存在而返回报错信息的。因为直接用key 去找值很危险,这样不存在返回none 就不会报错了。
例:
dic1 = { "k1": "chenSi", "k2": "ShuaiGe", "k3": "hehe" } print(dic1.get("k1","如果不存在返回这句话")) print(dic1.get("k4","如果不存在返回这句话")) #####分割线##### print(dic1["k2"]) print(dict1["k4"])
运行结果
5、dict.setdefault()传入key 和 value 两个参数。如果KEY 存在,则value 不生效,并返回存在的key 的值。如果key不存在,则创建新的key 和 value 到字典中。
例
dic1 = { "k1": "chenSi", "k2": "ShuaiGe", "k3": "hehe" } v1 = dic1.setdefault("k1","dabendan") print(dic1,v1) v2 = dic1.setdefault("k4","123456789") print(dic1,v2)
运行结果
6、dict.update() 方法,更新字典里的值。
dic1 = { "k1": "chenSi", "k2": "ShuaiGe", "k3": "hehe" } #写法1 dic1.update({"k1":"陈司"}) print(dic1) #写法2,k2不能加引号 dic1.update(k2="帅哥",) print(dic1)
运行结果