一、字典定义
字典是一种存储数据的容器,它和列表一样,都可以存储多个数据。
info = {'name':'班长', 'sex':'f', 'address':'北京'}
每个元素都是由两部分组成的,分别是键和值。‘name’为键,‘班长’为值
。
二、创建和使用字典
在Python中创建字典可以使用{}
字面量语法,这一点跟上一节课讲的集合是一样的。但是字典的{}
中的元素是以键值对的形式存在的,每个元素由:
分隔的两个值构成,:
前面是键,:
后面是值,代码如下所示。
xinhua = {
'麓': '山脚下',
'路': '道,往来通行的地方;方面,地区:南~货,外~货;种类:他俩是一~人',
'蕗': '甘草的别名',
'潞': '潞水,水名,即今山西省的浊漳河;潞江,水名,即云南省的怒江'
}
print(xinhua)
person = {
'name': '王大锤', 'age': 55, 'weight': 60, 'office': '科华北路62号',
'home': '中同仁路8号', 'tel': '13122334455', 'econtact': '13800998877'
}
print(person)
通过上面的代码,相信大家已经看出来了,用字典来保存一个人的信息远远优于使用列表或元组,因为我们可以用:
前面的键来表示条目的含义,而:
后面就是这个条目所对应的值。
当然,如果愿意,我们也可以使用内置函数dict
或者是字典的生成式语法来创建字典,代码如下所示。
# dict函数(构造器)中的每一组参数就是字典中的一组键值对
person = dict(name='王大锤', age=55, weight=60, home='中同仁路8号')
print(person) # {'name': '王大锤', 'age': 55, 'weight': 60, 'home': '中同仁路8号'}
# 可以通过Python内置函数zip压缩两个序列并创建字典
items1 = dict(zip('ABCDE', '12345'))
print(items1) # {'A': '1', 'B': '2', 'C': '3', 'D': '4', 'E': '5'}
items2 = dict(zip('ABCDE', range(1, 10)))
print(items2) # {'A': 1, 'B': 2, 'C': 3, 'D': 4, 'E': 5}
# 用字典生成式语法创建字典
items3 = {x: x ** 3 for x in range(1, 6)}
print(items3) # {1: 1, 2: 8, 3: 27, 4: 64, 5: 125}
想知道字典中一共有多少组键值对,仍然是使用len
函数;如果想对字典进行遍历,可以用for
循环,但是需要注意,for
循环只是对字典的键进行了遍历,不过没关系,在讲完字典的运算后,我们可以通过字典的键获取到和这个键对应的值。
person = {'name': '王大锤', 'age': 55, 'weight': 60, 'office': '科华北路62号'}
print(len(person)) # 4
for key in person:
print(key)
三、字典的常见操作
1.根据键访问值
info = {'name':'班长', 'id':100, 'sex':'f', 'address':’北京'}
print(info['name'])
print(info['address'])
注意:如果使用的是不存在的键,则程序会报错。
如果我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值。
info = {‘name’:‘班长’, ‘id’:100, ‘sex’:‘f’, ‘address’:‘北京’}
age = info.get(‘age’)
print(age) #‘age’键不存在,所以age为None
print(type(age))
age = info.get(‘age’, 18) # 若info不存在‘age’,返回默认值18
print(age)
2. 修改字典的元素
info = {‘name’:‘班长’, ‘id’:100, ‘sex’:‘f’, ‘address’:‘北京’}
newId = input('请输入新的学号')
info['id'] = int(newId)
print('修改之后的id为:%d'%info['id'])
3. 添加字典元素
info = {‘name’:‘班长’, ‘id’:100, ‘sex’:‘f’, ‘address’:‘北京’}
newId = input(‘请输入新的学号’)
info[‘id’] = newId
print(info)
4. 删除字典元素
del:
用于删除字典;删除后,字典完全不存在了,无法再根据键访问字典的值。clear:
只是清空字典中的数据,字典还存在,只不过没有元素。
5. 计算字典中键值对的个数
dict = {'Name': 'Zara', 'Age': 7}
print("Length : %d" % len (dict))
6. 获取字典中键的列表
keys()
方法返回在字典中的所有可用的键的列表。
dict = {'Name': 'Zara', 'Age': 7};
print(dict.keys())
7. 获取字典中值的列表
values()
方法返回在字典中的所有可用的值的列表
dict = {'Name': 'Zara', 'Age': 7};
print(dict.values())
8. 计算字典中键值对的个数
items()
方法返回字典的(键,值)元组对的列表
dict = {'Name': 'Zara', 'Age': 7}
print("Value : %s" % dict.items())
四、字典的遍历
1. 遍历字典的键key
dict = {'Name': 'Zara', 'Age': 7}
for key in dict.keys():
print(key)
2. 遍历字典的值value
dict = {'Name': 'Zara', 'Age': 7}
for value in dict.values():
print(value)
3. 遍历字典的元素
dict = {'Name': 'Zara', 'Age': 7}
for item in dict.items():
print(item)
4. 遍历字典的键值对
dict = {'Name': 'Zara', 'Age': 7}
for key,value in dict.items():
print("key=%s,value=%s"%(key,value))
五、字典的应用
1.输入一段话,统计每个英文字母出现的次数。
sentence = input('请输入一段话: ')
counter = {}
for ch in sentence:
if 'A' <= ch <= 'Z' or 'a' <= ch <= 'z':
counter[ch] = counter.get(ch, 0) + 1
for key, value in counter.items():
print(f'字母{key}出现了{value}次.')
2.在一个字典中保存了股票的代码和价格,找出股价大于100元的股票并创建一个新的字典。
stocks = {
'AAPL': 191.88,
'GOOG': 1186.96,
'IBM': 149.24,
'ORCL': 48.44,
'ACN': 166.89,
'FB': 208.09,
'SYMC': 21.29
}
stocks2 = {key: value for key, value in stocks.items() if value > 100}
print(stocks2)