目录
3.4、get(),返回键对应的值,如果不存在对应的键则返回默认值
3.5、keys(),返回一个列表,里面包含了字典里的所有键
3.6、values(),返回一个列表,里面包含了字典的所有值
3.7、items(),返回一个列表,里面包含了字典里的所有键和值
1、定义字典
字典(dict)类型就和它的名字一样,可以像字典一样去查找,定义字典非常简单,例如:
trans={
"this" :"这",
"is" :"是",
"world":"世界",
}
print(trans,type(trans))
#执行结果为
{'this': '这', 'is': '是', 'world': '世界'} <class 'dict'>
字典的元素是成对出现的,每个元素都是由“:”和键值对(“:”左边的称为键或者Key,“:”右边的称为值或者Value)构成,元素和元素之间用“,”分隔,整个字典用花括号“{}”包围。
注意:字典的键必须是唯一的、不重复的。
如果是空字典(一个元素都没有),则可以直接使用“{}”表示。
2、使用字典
在Python中,字典就是一组键值对,字典元素都是成对出现的,每个元素必须要有键和对应的值,访问字典和查字典一样,需要用键去“查找”值。
2.1、访问字典,用键查找
trans={
"this" :"这",
"is" :"是",
"world":"世界",
}
print("world",trans["world"])
#执行结果为
world 世界
print("python",trans["python"])
#执行结果为
KeyError: 'python'
用类似列表索引的语法查找键对应的值,但是这种方法只能获取已经存在的键值对,如果尝试访问不存在的键,Python将会显示错误信息。
2.2、修改字典
字典和列表一样,都是一种可以修改的结构,修改的方式和列表类似。
trans={
"this" :"这",
"is" :"是",
"world":"世界",
}
print(trans)
trans["world"]="宇宙"
print(trans)
trans["是"]="are" #不能改变dict中的值,此操作会另外增加键值对
print(trans)
#执行结果为
{'this': '这', 'is': '是', 'world': '世界'}
{'this': '这', 'is': '是', 'world': '宇宙'}
{'this': '这', 'is': '是', 'world': '宇宙', '是': 'are'}
注意:只能利用通过键来修改值。
2.3、新增元素
字典新增元素和修改元素的语法是一样的
trans={ }
print(trans)
trans["world"]="世界"
print(trans)
#执行结果为
{}
{'world': '世界'}
2.4、删除元素
由于字典和列表一样都是可以被修改的类型,所以字典中的元素自然也能被删除
trans={
"this" :"这",
"is" :"是",
"world":"世界",
}
print(trans)
del trans["is"]
print(trans)
#执行结果为
{'this': '这', 'is': '是', 'world': '世界'}
{'this': '这', 'world': '世界'}
3、字典的其他操作
3.1、clear(),清空字典所有元素
trans={
"this" :"这",
"is" :"是",
"world":"世界",
}
print(trans)
trans.clear()
print(trans)
#执行结果为
{'this': '这', 'is': '是', 'world': '世界'}
{}
3.2、copy(), 复制一份新副本
字典和列表一样,如果只是复制的话则只是引用之前的内容,但如果做修改的话就会改变原先的字典内容。copy方法类似与列表的"[:]"语法,相当于完整地复制了一份新的副本。
trans1={
"this" :"这",
"is" :"是",
"world":"世界",
}
trans2=trans1
trans3=trans1.copy()
trans2["this"]=["这一个"]
print(trans2)
print(trans1)
trans3["world"]="宇宙"
print(trans3)
print(trans1)
#执行结果为
{'this': ['这一个'], 'is': '是', 'world': '世界'} # trans2 赋值 引用trans1
{'this': ['这一个'], 'is': '是', 'world': '世界'} # trans1
{'this': '这', 'is': '是', 'world': '宇宙'} # trans3 对trans1无影响
{'this': ['这一个'], 'is': '是', 'world': '世界'} # trans1
从执行结果我们可以发现,使用copy方法对获取到的字典做修改,原始的字典不受影响。
需注意:copy进行的拷贝是浅拷贝,就是说,如果字典的元素也是字典,那么copy只会影响最外层字典,元素内部还是引用。可以用深拷贝来解决此类问题。
3.3、fromkeys(),创建一个新字典
用序列中的元素作为字典的键,第二个参数为字典所有参数对应的初始值。
seq={"name","class","age"}
student1=dict.fromkeys(seq)
print("不指定默认值的student1:",student1)
student2=dict.fromkeys(seq,18)
print("指定默认值的student2:",student2)
#执行结果为
不指定默认值的student1: {'class': None, 'age': None, 'name': None}
指定默认值的student2: {'class': 18, 'age': 18, 'name': 18}
3.4、get(),返回键对应的值,如果不存在对应的键则返回默认值
trans1={
"this" :"这",
"is" :"是",
"world":"世界",
}
print(trans1.get("this"))
print(trans1.get("class"))
#执行结果为
这
None
3.5、keys(),返回一个列表,里面包含了字典里的所有键
trans1={
"this" :"这",
"is" :"是",
"world":"世界",
}
print(trans1.keys())
#执行结果为
dict_keys(['this', 'is', 'world'])
keys方法常常用来判断一个键是否存在于字典中,可以于“in”操作符组合使用,例如:
trans1={
"this" :"这",
"is" :"是",
"world":"世界",
}
print("是否存在world?","world" in trans1.keys())
print("是否存在class?","class" in trans1.keys())
#执行结果为
是否存在world? True
是否存在class? False
3.6、values(),返回一个列表,里面包含了字典的所有值
trans1={
"this" :"这",
"is" :"是",
"world":"世界",
}
print(trans1.values())
#执行结果为
dict_values(['这', '是', '世界'])
3.7、items(),返回一个列表,里面包含了字典里的所有键和值
准确的说items返回的并不是一个list类型,只是类似list。
trans1={
"this" :"这",
"is" :"是",
"world":"世界",
}
print(trans1.items())
#执行结果为
dict_items([('this', '这'), ('is', '是'), ('world', '世界')])
注意:字典不能直接应用于for循环中。我们可以用items方法来遍历字典,例如:
trans1={
"this" :"这",
"is" :"是",
"world":"世界",
}
for k,v in trans1.items():
print(k,"=>",v) # print前要有空格,否则报错,一般为一个tab键空格
#执行结果为
this => 这
is => 是
world => 世界