Python常用语法——dictionary(字典)部分(完善中)
1、Dictionary(字典)是什么
字典是另一种可变容器模型,且可存储任意类型对象
字典的每个键值key->value对用冒号:
分割,每个键值对之间用逗号,
分割,整个字典包括在花括号{}
中
例如:
d = {key1 : value1, key2 : value2 }
2、创建字典
直接创建字典
dic1 = { 'Author' : 'Python当打之年' , 'age' : 99 , 'sex' : '男' }
使用dict()函数创建
dic3 = dict( Author = 'Python当打之年', age = 99, sex = '男')
由列表转化为字典
lst = [('Author', 'Python当打之年'), ('age', 99), ('sex', '男')]
dic2 = dict(lst)
使用dict()和zip()函数创建
list1 = ['Author', 'age', 'sex']
list2 = ['Python当打之年', 99, '男']
dic4 = dict(zip(list1, list2))
3、访问字典内容
直接访问
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
如果用字典里没有的键访问数据,会报错
使用get()方法读取
#参数key:字典中要查找的键,default:如果指定的键不存在时,返回该默认值
dict.get(key, default=None)
dict = {'Name': 'Runoob', 'Age': 27}
print ("Age 值为 : %s" % dict.get('Age'))
输出结果为:
Age 值为 : 27
Sex 值为 : NA
修改字典内容
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
#修改内容
dict['Age'] = 8
#添加内容
dict['School'] = "菜鸟教程"
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
4、删除字典内容
del删除键值对
#删除键 'Name',会删除掉这个键值对
del dict['Name']
del删除字典
#删除字典
del dict
pop()方法删除键值对
site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'}
pop_obj=site.pop('name')
5、遍历字典
即使遍历字典时,键值对的返回顺序也与存储顺序不同。
遍历所有键值对——items()
#items()方法返回一个键值对列表
for key,value in user.items():
print("key:"+key)
print("val:"+value)
遍历所有键——keys()
#keys()方法返回一个键值列表
for key in user.keys():
print("key:"+key)
另外,由于遍历字典的时候,会默认遍历所有的键,因此,如果将上述代码修改为如下这样,其输出不变:
for key in user:
print("key:"+key)
另外,由于keys()方法实际上是返回一个队列,因此其并非只能用于遍历,还可以用来判断元素是否在列表中:
if 'peter' not in favorite_drink.keys():
print("Peter, say your favorite drink!")
如果需要按顺序遍历字典中的所有键,还可以使用函数sorted()来实现:
for key in sorted(user.keys()):
print("key:"+key)
遍历所有值——values()
for value in user.values():
print("value:"+value)
但是这种遍历所有值的做法,并没有考虑值重复的情况(键不会重复,因此并没有讨论这种情况)
为了剔除值的重复项,可以使用集合(set),集合类似于列表,但是每个元素都必须是独一无二的:
for value in set(user.values()):
print("value:"+value)