第七关:字典 - 0入门到进阶(附练习题) | Python基础语法

下面小编就整理了在编程中,比较常用的【字典】入门到进阶的用法。

Python基础语法 - 专栏链接

目录

1.  概念

2.  字典与列表的相同处、不同处

3.  修改、添加、删除字典元素

4.  字典常用方法:keys()、values()、items()、get()

5.  字典嵌套

练习题

联系我们,一起学Python吧


1.  概念

字典 也是 Python 中最常用的数据类型之一。

列表字典 都是对象集合。既然都有了 列表,为何还需要 字典 呢?我们来通过一个例子解答这个疑问。

场景假设:统计语文考试的同学名 和 考试分数。

列表统计:需要两个列表分别存放姓名和分数。

scores = [60,70,80,90]
students = ['小王','小刚','小红','小明']

字典统计:姓名为字典的键,分数为字典的值存放于字典中。

scores = {
    '小王':60,
    '小刚':70,
    '小红':80,
    '小明':90
}
# 如果我们需要查询小明的成绩,可以直接字典名scores搭配键['小明']取值
print(scores['小明'])
# 90

根据不同的需求,合理使用 列表 字典 能够让我们的程序代码更简洁更易懂

2.  字典与列表的相同处、不同处

相同处:

1.  都有定义名称。

2.  都要用=赋值。

3.  用逗号作为元素间的分隔符。

不同处:

1.  列表外层用的是中括号[ ],字典的外层是大括号{ }

2.  列表中的元素是用英文冒号连接的独立的,而字典的元素是由一个个键值对组成的,用英文冒号连接。如'小明':90,其中我们把'小明'叫键(key),90叫值(value)。

需要注意的是,字典中的 唯一的,如果字典中有两个相同的 ,Python 只会保留后面那个。而 可以有相同任意类型的值。

3.  修改、添加、删除字典元素

scores = {
    '小王':60,
    '小刚':70,
    '小红':80,
    '小明':90
}
# 修改:字典名scores+存在的键['小王'],与之赋值就行
scores['小王'] = 65
print(scores)
# {'小王': 65, '小刚': 70, '小红': 80, '小明': 90}

# 添加:字典名scores+不存在的键['小张'],与之赋值就行
scores['小张'] = 100
print(scores)
# {'小王': 65, '小刚': 70, '小红': 80, '小明': 90, '小张': 100}

# 删除:del+字典名+存在的键['小王']
del scores['小王']
print(scores)
# {'小刚': 70, '小红': 80, '小明': 90, '小张': 100}

4.  字典常用方法:keys()、values()、items()、get()

keys():用于获取字典中所有的 键。

scores = {
    '小王':60,
    '小刚':70,
    '小红':80,
    '小明':90
}
print(scores.keys())
# dict_keys(['小王', '小刚', '小红', '小明'])

# 拓展:如果你想取字典scores的键,该怎么办?
# 此处只介绍了方法一,还有更方便的方法,items()方法那
print(type(scores.keys()))
# 注意keys()方法得到的是<class 'dict_keys'>类型,我们需要转换为列表类型(此时可使用:list()转换)。

for key in list(scores.keys()):
    print(key)
# 小王
# 小刚
# 小红
# 小明

values():用于获取字典中所有的

scores = {
    '小王':60,
    '小刚':70,
    '小红':80,
    '小明':90
}
print(scores.values())
# dict_values([60, 70, 80, 90])
# 取值方法和keys()方法拓展一样,items()会介绍更方便的

items():用于获取字典中所有的 键 + 值 元祖。

scores = {
    '小王':60,
    '小刚':70,
    '小红':80,
    '小明':90
}
for name, score in scores.items():
    print('%s的分数是:%d' % (name, score))
# 小王的分数是:60
# 小刚的分数是:70
# 小红的分数是:80
# 小明的分数是:90

get():通过 获取字典对应的值,当 不存在于字典当中时不会报错,而是默认返回 None,也可通过第二个参数设置不存在时的默认返回值。

scores = {
    '小王':60,
    '小刚':70,
    '小红':80,
    '小明':90
}
# 下面两种取值都可以
# 存在键:小王
print(scores['小王'])
print(scores.get('小王'))
# 60
# 60

# 不存在键:小张
print(scores.get('小张'))
# None

# 当不存在键:get()第二个参数可修改默认返回值None。
print(scores.get('小张','小张没有参加语文考试'))
# 小张没有参加语文考试

print(scores['小张'])
# 报错:KeyError: '小张'

下图是字典的其他用法,有兴趣的同学可以尝试下,这里不做延伸。

5.  字典嵌套

前面提到过,字典的键是唯一的,值可以是任意类型的相同值。当值为字典(列表)时,就组合成了字典嵌套。

scores = {
    '一班':{
        '小王':60,
        '小刚':70
    },
    '二班':{
        '小红':80,
        '小明':90
    }
}
print(scores)
# {'一班': {'小王': 60, '小刚': 70}, '二班': {'小红': 80, '小明': 90}}

取值:如果我们想知道小明的分数,应该怎么取值呢?

其实和普通的字典一样,先获取字典 第一层 的键 ['二班'] 得到包含 小红 和 小明 以及分数的字典,再通过键 ['小明'] 就能得到分数了。

scores = {
    '一班':{
        '小王':60,
        '小刚':70,
    },
    '二班':{
        '小红':80,
        '小明':90
    }
}
print(scores['二班'])
# {'小红': 80, '小明': 90}

print(scores['二班']['小明'])
# 90

练习题

同学们,先自觉练习,答案在公众号,公众号回复暗号【答案】即可。

1. 在【Python编程】中用于获取字典所有的值的方法是?

A. keys()
B. values()
C. items()
D. get()

2. 下列代码的打印结果为?

shop = {
    '铅笔':2,
    '橡皮擦':3,
    '文具盒':10,
}
shop['文具盒'] = 15
print(shop['文具盒'])

A. 2
B. 3
C. 10
D. 15

3. 下列代码的打印结果为?

shop = {
    '铅笔':2,
    '橡皮擦':3,
    '文具盒':10,
    '尺':{
        '直尺':5,
        '三角尺':6
    }
}
print(shop['尺']['直尺'])

A. 尺
B. 10
C. 直尺
D. 5

4. 下列代码的打印结果对吗?

shop = {
    '铅笔':2,
    '橡皮擦':3,
    '文具盒':10,
    '尺':{
        '直尺':5,
        '三角尺':6
    }
}
for i in shop:
    print(i)
打印结果:
铅笔
橡皮擦
文具盒
直尺
三角尺

5. 小明去文具店一共买了【2根铅笔,1块橡皮擦,1个文具盒,2个10cm直尺】,请问小明一共花了多少元钱?

提示:已知文具价格如下代码所示。

知识点:字典根据键取值,嵌套字典注意键和值的数据类型。

shop = {
    '铅笔':2,
    '橡皮擦':3,
    '文具盒':10,
    '尺':{
        '直尺':{
            '20cm直尺':10,
            '10cm直尺':5
        },
        '三角尺':6
    }
}

联系我们,一起学Python吧

关注我们CSDN吧:每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。


​微信群(关注「Python家庭」一起轻松学Python吧)

​QQ 群(983031854

发布了16 篇原创文章 · 获赞 95 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_34409973/article/details/104590709