在映射类型的数据获取上,字典的效率是要远远快于列表的。
y={"吕布":”口口布“,"关羽":"关习习"}
type(y) 输出的结果为<class.dic>
y[刘备] = "刘baby"
输出的结果为a={"吕布":”口口布“,"关羽":"关习习","刘备":"刘baby"}
另外几种表示形式
表示方法1:
b= dict([("吕布","口口布"),(“关羽”,“关习习”)])//列表元组表示法
表示方法2:
c=dict(吕布=“口口布”,关羽=“关习习”) //dict表示法
表示方法3:
d=dict({"吕布":”口口布“,"关羽":"关习习",},刘备="刘baby")//混合法
f=dict(zip([“吕布”,“关羽”,“刘备”],[“口口布”,“关习习”,“刘baby”])) //利用zip进行两个列表的结合
字典的增删改查操作如下:
d = dict.fromkeys("fish",250)
输出的结果为:{"f":250 , "i";250 , "s":250,"h":250}
改操作:
d["f"]=70
输出结果为:{"f":70 , "i";250 , "s":250,"h":250}
利用update函数进行改操作
d.update(‘f’:80,F="150")
输出结果为:{"f":80 , "i";250 , "s":250,"h":250,“F”:150}
增操作:
d["c"] = 30 //在字典中未找到“c”字符,则在字典中新增“c”字符
输出结果为:{"f":70 , "i";250 , "s":250,"h":250,"c":250}
删操作:
d.pop('s') //返回的是该字符对应的键值
del d['f']//删除d字典中的i
d.clear() //该操作会使字典变成一个空字典
查
d['c'] //若在字典中找不到字符‘c’则报错
为了使用户体验更佳,使用get函数
d.get("c" ,"这里没有c")
输出的值为”这里没有c“
d.setdefault('c',"code") //setdefault的作用是若在字典中查找不到字符'c',则将”code“值作为‘c’的键值,并加入到字典中。
items()函数的作用是将字典中的每一对key和value值组成元组,并将这些元组存储在一个列表中。
values()函数的作用是将字典中的每一个value值存储在一个列表中。
keys()函数的作用是将字典中的每一个key值存储在一个列表中。
得到字典中所有的values值有如下方法:
list(d.values())
得到字典中所有的keys值得方法如下:
list(d.keys()) 或者list(d)
iter函数是生成一个可迭代对象(字典、列表)的迭代器,利用next函数依次得到列表中的数据,遍历一次后销毁。
字典可以嵌套定义,用法如下:
d1 = {"吕布":{"语文":80,"数学":20,"英语":50},"关羽":{"语文":50分,"数学":30分,"英语":30分}}
d2={"吕布":[60,70,80],"刘备":[80,90,70]}
查找嵌套字典的值用法如下:
d1["吕布"]["语文"] //需要两个索引值来查找到对应的值
d2["吕布"][1] //输出结果为20
案例:如何求出字符串的编码值。
用法如下:
d={x:ord(x) for x in "Fishc"} //for前面的x:ord(x)表示字典的一对键值
问题一:
d={x:y for x in[1,3,5] for y in [2,4,6]}
得到的字典是
d={1:6 , 3:6 ,5:6}
解析:x=1时,y依次遍历2,4,6。所以x=1时的值一直在改变,分别是1:2 ,1:4,1:6。之后同理。