Python从0到100(十一):Python字典介绍及运用-LMLPHP

一、字典定义

字典是一种存储数据的容器,它和列表一样,都可以存储多个数据。

 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)
04-10 03:07