资讯专栏INFORMATION COLUMN

Python学习之路5-字典

NicolasHe / 1030人阅读

摘要:本章主要介绍字典的概念,基本操作以及一些进阶操作。使用字典在中,字典是一系列键值对。中用花括号来表示字典。代码定义空字典的语法结果如果要修改字典中的值,只需通过键名访问就行。

《Python编程:从入门到实践》笔记。
本章主要介绍字典的概念,基本操作以及一些进阶操作。
1. 使用字典(Dict)

在Python中,字典是一系列键值对。每个键都与一个值相关联,用键来访问值。Python中用花括号{}来表示字典。

# 代码:
alien = {"color": "green", "points": 5}

print(alien)  # 输出字典
print(alien["color"])   # 输出键所对应的值
print(alien["points"])

# 结果:
{"color": "green", "points": 5}
green
5

字典中可以包含任意数量的键值对,并且Python中字典是一个动态结构,可随时向其中添加键值对。

# 代码:
alien = {"color": "green", "points": 5}
print(alien)

alien["x_position"] = 0
alien["y_position"] = 25
print(alien)

# 结果:
{"color": "green", "points": 5}
{"color": "green", "points": 5, "x_position": 0, "y_position": 25}

有时候,在空字典中添加键值对是为了方便,而有时候则是必须这么做,比如使用字典来存储用户提供的数据或在编写能自动生成大量键值对的代码时,此时通常要先定义一个空字典。

# 代码:
alien = {}    # 定义空字典的语法
alien["x_position"] = 0
alien["y_position"] = 25
print(alien)

# 结果:
{"x_position": 0, "y_position": 25}

如果要修改字典中的值,只需通过键名访问就行。

# 代码:
alien = {"color" : "green"}
print("The alien is " + alien["color"] + ".")

alien["color"] = "yellow"
print("The alien is now " + alien["color"] + ".")

# 结果:
The alien is green.
The alien is now yellow.

对于字典中不再需要的信息,可用del语句将相应的键值对删除:

# 代码:
alien = {"color": "green", "points": 5}
print(alien)

del alien["color"]
print(alien)

# 结果:
{"color": "green", "points": 5}
{"points": 5}

前面的例子都是一个对象的多种信息构成了一个字典(游戏中的外星人信息),字典也可以用来存储众多对象的统一信息:

favorite_languages = {
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",   # 建议在最后一项后面也加个逗号,便于之后添加元素
}
2. 遍历字典 2.1 遍历所有的键值对
# 代码:
user_0 = {
    "username": "efermi",
    "first": "enrico",
    "last": "fermi",
}

for key, value in user_0.items():
    print("Key: " + key)
    print("Value: " + value + "
")

# 结果:
Key: username
Value: efermi

Key: first
Value: enrico

Key: last
Value: fermi

这里有一点需要注意,遍历字典时,键值对的返回顺序不一定与存储顺序相同,Python不关心键值对的存储顺序,而只追踪键与值之间的关联关系。

2.2 遍历字典中的所有键

字典的方法keys()将字典中的所有键以列表的形式返回,以下代码遍历字典中的所有键:

# 代码:
favorite_languages = {
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}

for name in favorite_languages.keys():
    print(name.title())

# 结果:
Jen
Sarah
Edward
Phil

也可以用如下方法遍历字典的所有键:

# 代码:
favorite_languages = {
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}

for name in favorite_languages:
    print(name.title())

# 结果:
Jen
Sarah
Edward
Phil

但是带有方法keys()的遍历所表达的意思更明确。
还可以用keys()方法确定某关键字是否在字典中:

# 代码:
favorite_languages = {
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}

if "erin" not in favorite_languages.keys():
    print("Erin, please take our poll!")

# 结果:
Erin, please take our poll!

使用sorted()函数按顺序遍历字典中的所有键:

# 代码:
favorite_languages = {
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}

for name in sorted(favorite_languages.keys()):
    print(name.title() + ", thank you for taking the poll.")

# 结果:
Edward, thank you for taking the poll.
Jen, thank you for taking the poll.
Phil, thank you for taking the poll.
Sarah, thank you for taking the poll.
2.3 遍历字典中的所有值

类似于遍历所有键用keys()方法,遍历所有值则使用values()方法

# 代码:
favorite_languages = {
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}

print("The following languages have been mentioned:")
for language in favorite_languages.values():
    print(language.title())

# 结果:
Python
C
Ruby
Python

从结果可以看出,上述代码并没有考虑去重的问题,如果想要去重,可以调用set()

# 代码:
favorite_languages = {
    "jen": "python",
    "sarah": "c",
    "edward": "ruby",
    "phil": "python",
}

print("The following languages have been mentioned:")
for language in set(favorite_languages.values()):
    print(language.title())

# 结果:
Python
C
Ruby
3. 嵌套 3.1 字典列表

以前面外星人为例,三个外星人组成一个列表:

# 代码:
alien_0 = {"color": "green", "points": 5}
alien_1 = {"color": "yellow", "points": 10}
alien_2 = {"color": "red", "points": 15}

aliens = [alien_0, alien_1, alien_2]

for alien in aliens:
    print(alien)

# 结果:
{"color": "green", "points": 5}
{"color": "yellow", "points": 10}
{"color": "red", "points": 15}
3.2 在字典中存储列表

每当需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表:

# 代码:
pizza = {
    "crust": "thick",
    "toppings": ["mushrooms", "extra cheese"],
}

print("You ordered a " + pizza["crust"] + "-crust pizza" +
      "with the following toppings:")

for topping in pizza["toppings"]:
    print("	" + topping)

# 结果:
You ordered a thick-crust pizzawith the following toppings:
    mushrooms
    extra cheese
3.3 在字典中存储字典

涉及到这种情况时,代码都不会简单:

# 代码:
users = {
    "aeinstein": {
        "first": "albert",
        "last": "einstein",
        "location": "princeton",
    },
    "mcurie": {
        "first": "marie",
        "last": "curie",
        "location": "paris",
    },
}

for username, user_info in users.items():
    print("
Username: " + username)
    full_name = user_info["first"] + " " + user_info["last"]
    location = user_info["location"]

    print("	Full name: " + full_name.title())
    print("	Location: " + location.title())

# 结果:
Username: aeinstein
    Full name: Albert Einstein
    Location: Princeton

Username: mcurie
    Full name: Marie Curie
    Location: Paris
迎大家关注我的微信公众号"代码港" & 个人网站 www.vpointer.net ~

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/41797.html

相关文章

  • Python全栈之路系列之字典数据类型

    摘要:字典在基本的数据类型中使用频率也是相当高的,而且它的访问方式是通过键来获取到对应的值,当然存储的方式也是键值对了,属于可变类型。 字典(dict)在基本的数据类型中使用频率也是相当高的,而且它的访问方式是通过键来获取到对应的值,当然存储的方式也是键值对了,属于可变类型。 创建字典的两种方式 第一种 >>> dic = {k1:123,k2:456} >>> dic {k1: 123, ...

    caoym 评论0 收藏0
  • Python学习之路6-用户输入和while循环

    摘要:本章主要介绍如何进行用户输入,循环,以及与循环配合使用的语句。函数在中,使用函数获取用户输入,这里请注意的返回值为字符串。值得提醒的是,编写循环时应避免死循环,或者叫做无限循环,比如循环忘记了变量自增。 《Python编程:从入门到实践》笔记。本章主要介绍如何进行用户输入,while循环,以及与循环配合使用的break, continue语句。 1. input() 函数 在Pytho...

    wfc_666 评论0 收藏0
  • Python学习之路15-下载数据

    摘要:本节中将绘制幅图像收盘折线图,收盘价对数变换,收盘价月日均值,收盘价周日均值,收盘价星期均值。对数变换是常用的处理方法之一。 《Python编程:从入门到实践》笔记。本篇是Python数据处理的第二篇,本篇将使用网上下载的数据,对这些数据进行可视化。 1. 前言 本篇将访问并可视化以两种常见格式存储的数据:CSV和JSON: 使用Python的csv模块来处理以CSV(逗号分隔的值)...

    张春雷 评论0 收藏0
  • Python 进阶之路 (二) Dict 进阶宝典,初二快乐!

    摘要:新年快乐大家好,今天是大年初二,身在国外没有过年的氛围,只能踏实写写文章,对社区做点贡献,在此祝大家新年快乐上一期为大家梳理了一些的进阶用法,今天我们来看字典的相关技巧,我个人在编程中对字典的使用非常频繁,其实对于不是非常大的数据存储需求, 新年快乐 大家好,今天是大年初二,身在国外没有过年的氛围,只能踏实写写文章,对社区做点贡献,在此祝大家新年快乐!上一期为大家梳理了一些List的进...

    ChristmasBoy 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<