IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 【Python学习】五、字典 -> 正文阅读

[Python知识库]【Python学习】五、字典

5.1 一个简单的字典

字典类似于列表,但让你能够将不同的信息关联起来。

alien_0 = {
    'color': 'green',
    'point': 5
}
print(alien_0)
print(alien_0['color'])
print(alien_0['point'])

5.2 使用字典

在Python中,字典是一系列键—值对 。

每个键都与一个值相关联,你可以使用键来访问与之相关联的值。

与键相关联的值可以是数字、字符串、列表乃至字典。

事实上,可将任何Python对象用作字典中的值。

在Python中,字典用放在花括号{}中的一系列键—值对表示

键—值对是两个相关联的值。

指定键时,Python将返回与之相关联的值。

键和值之间用冒号分隔,而键—值对之间用逗号分隔。

5.2.1 访问字典中的值

要获取与键相关联的值,可依次指定字典名和放在方括号内的键

alien_0 = {
    'color': 'green',
    'point': 5
}
print(alien_0['color'])
print(alien_0['point'])

alien_0 = {
    'color': 'green',
    'point': 5
}

new_point = alien_0['point']
print("You have earned " + str(new_point) + " points!")

5.2.2 添加键—值对

字典是一种动态结构,可随时在其中添加键—值对。

要添加键—值对, 可依次指定字典名、用方括号括起的键和相关联的值。

alien_0 = {
    'color': 'green',
    'point': 5
}
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)

注意,键—值对的排列顺序与添加顺序不同。Python不关心键—值对的添加顺序,而只关心键和值之间的关联关系。?

5.2.3 创建空字典

?可先使用一对空的花括号定义一个字典,再分行添加各个键—值对。

alien_0 = {}
alien_0['color'] = 'green'
alien_0['point'] = 5
alien_0['x_position'] = 0
alien_0["y_position"] = 25

print(alien_0)

5.2.4 修改字典中的值

要修改字典中的值,可依次指定字典名、用方括号括起的键以及与该键相关联的新值。

alien_0 = {
    "color": 'green'
}
print("原先的外星人颜色为:", alien_0['color'])
alien_0['color'] = 'yellow'
print("修改后的外星人颜色为:", alien_0['color'])

来看一个更有趣的例子:对一个能够以不同速度移动的外星人的位置进 行跟踪。

为此,我们将存储该外星人的当前速度,并据此确定该外星人将向右移动多远:

alien_0 = {
    "color": "green",
    "point": 5,
    'speed': "medium",
    "x_position": 0
}
print("原来的x轴坐标为:",alien_0['x_position'])

if alien_0['speed'] == "slow":
    x_increment = 1
elif alien_0['speed'] == 'medium':
    x_increment = 2
elif alien_0['speed'] == 'high':
    x_increment = 3

alien_0['x_position'] = alien_0['x_position'] + x_increment

print("移动后的x轴坐标为:", alien_0['x_position'])

?

5.2.5 删除键值对

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

使用del语句时,必须指定字典名和要删除的键。

alien_0 = {
    "color": "green",
    "point": 5,
    'speed': "medium",
    "x_position": 0
}

del alien_0['speed']
del alien_0['x_position']
print(alien_0)

5.2.6 由类似对象组成的词典

在前面的示例中,字典存储的是一个对象(游戏中的一个外星人)的多种信息,但你也可以使用字典来存储众多对象的同一种信息。

favourite_city = {
    'zsc': "beijing",
    'dq': "jinan",
    'zcl': "qingdao"
}
print("Zsc's favourite city is " +
      favourite_city["zsc"].title() + "!")

5.3 遍历字典

5.3.1?遍历所有的键—值对

编写用于遍历字典的for循环,可声明两个变量,用于存储键—值对中的键和值。对于这两个变量,可使用任何名称。?

user_0 = {
    "first": "Smith",
    "last": "James",
    "info": "AMD"
}
for key, value in user_0.items():
    print("\nKey:", key)
    print("Value:", value)

?方法items():返回一个键—值对列表。

注意,即便遍历字典时,键—值对的返回顺序也与存储顺序不同。

Python不关心键—值对的存储顺序,而只跟踪键和值之间的关联关系。

favourite_city = {
    'zsc': "beijing",
    'dq': "jinan",
    'zcl': "qingdao"
}
for name, city in favourite_city.items():
    print(name.title() + "'s favourite city is " + city.title() + "!")

?

?5.3.2 遍历字典中的所有键

在不需要使用字典中的值时,方法keys() 很有用。

遍历字典时,会默认遍历所有的键,如果显式地使用方法keys() 可让代码更容易理解,你可以选择这样做,但如果你愿意,也可省略它。

favourite_city = {
    'zsc': "beijing",
    'dq': "jinan",
    'zcl': "qingdao"
}
for name in favourite_city.keys():
    print(name.title())
print("\n")
for name in favourite_city:
    print(name.title())

?方法keys() 并非只能用于遍历;实际上,它返回一个列表,其中包含字典中的所有键。

favourite_city = {
    'zsc': "beijing",
    'dq': "jinan",
    'zcl': "qingdao"
}

names = ['zsc', 'ltt', 'zgc']

for name in names:
    print(name)
    if name in favourite_city.keys():
        print("Hello " + name.title() + ", I know your favourite city is " + favourite_city[name].title() + "!")
    else:
        print("You are not in the list!")

5.3.3 按顺序遍历字典中的所有键

?要以特定的顺序返回元素,一种办法是在for循环中对返回的键进行排序。

为此,可使用函数sorted() 来获得按特定顺序排列的键列表的副本。

favourite_city = {
    'zsc': "beijing",
    'dq': "jinan",
    'zcl': "qingdao"
}

for name in sorted(favourite_city.keys()):
    print(name.title() + "'s favourite city is " + favourite_city[name] + "!")

?5.3.4?遍历字典中的所有值

如果你感兴趣的主要是字典包含的值,可使用方法values() ,它返回一个值列表而不包含任何键。

favourite_city = {
    'zsc': "beijing",
    'dq': "jinan",
    'zcl': "qingdao",
    'zgc': 'beijing'
}
for city in favourite_city.values():
    print(city)

这种做法提取字典中所有的值,而没有考虑是否重复。为剔除重复项,可使用集合(set)。集合 类似于列表,但 每个元素都必须是独一无二的。

favourite_city = {
    'zsc': "beijing",
    'dq': "jinan",
    'zcl': "qingdao",
    'zgc': 'beijing'
}
for city in set(favourite_city.values()):
    print(city)

5.4 嵌套

有时候,需要将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套 。

可以在列表中嵌套字典、在字典中嵌套列表甚至在字典中嵌套字典。

5.4.1 字典列表

alien_0 = {
    "color": 'green',
    'point': 5
}
alien_1 = {
    "color": 'red',
    'point': 10
}
alien_2 = {
    "color": 'yellow',
    'point': 15
}
aliens = [alien_0, alien_1, alien_2]

for alien in aliens:
    print(alien)

5.4.2 在字典中存储列表

favourite_city = {
    'zsc': ["beijing", 'nanjing'],
    'dq': ["jinan", 'qingdao'],
    'zcl': ["qingdao", 'harbin'],
    'zgc': ['beijing', 'shanghai'],
}
# for name in favourite_city:
#     print(name.title() + "'s favourite city is ")
#     for city in favourite_city[name]:
#         print(city.title())

for name, citys in favourite_city.items():
    print(name.title() + "'s favourite city is ")
    for city in citys:
        print(city.title(), "\t")

5.4.3 在字典中存储字典?

users = {
    'alice': {
        'home': 'haidian',
        'company': "AMD",
    },
    'bob': {
        'home': "shandong",
        'company': "PKU"
    },
    'carol': {
        'home': "hebei",
        'company': "BUAA"

    },

}
for name, infos in users.items():
    print("This user's name is ", name)
    print("This person's home is " + infos['home'])
    print("This person's company is " + infos['company'])
    print('\n')

5.5 练习

5-1 人 :使用一个字典来存储一个熟人的信息,包括名、姓、年龄 和居住的城市。该字典应包含键first_name 、last_name 、age 和city 。将存储在该字典中的每项信息都打印出来。

# 5-1
info = {
    "first_name": 'Lee',
    'Last_name': "Ming",
    'age': 22,
    'city': 'Beijing',
}

for key, value in info.items():
    print(key + ":")
    print(str(value) + "\n")

5-2 喜欢的数字 :使用一个字典来存储一些人喜欢的数字。请想出 5个人的名字,并将这些名字用作字典中的键;想出每个人喜欢的 一个数字,并将这些数字作为值存储在字典中。打印每个人的名字 和喜欢的数字。

favourite_number = {
    'zsc': 1,
    'ltt': 2,
    'ly': 3,
    'dq': 4,
    'zcl': 5,
}
for name, number in favourite_number.items():
    print(name.title() + "'s favourite number is " + str(number) + '.')

5-5 河流 :创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键—值对可能是'nile': 'egypt' 。

使用循环为每条河流打印一条消息,如“The Nile runs through Egypt.”。

使用循环将该字典中每条河流的名字都打印出来。

使用循环将该字典包含的每个国家的名字都打印出来。

# 5-5
rivers = {
    'nile': "egypt",
    'yellow river': 'china',
    'yangtze river': 'china',
    'mekong river': 'china',
    'ganges river': 'india',
}

for river, country in rivers.items():
    print("The " + river.title() + " runs through " + country.title() + ".")

for river in rivers:
    print(river.title())

for country in set(rivers.values()):
    print(country.title())

5-7 人 :在为完成练习6-1而编写的程序中,再创建两个表示人的字典,然后将这三个字典都存储在一个名为people 的列表中。遍历 这个列表,将其中每个人的所有信息都打印出来。

people1 = {
    'first_name': 'Lee',
    'Last_name': "Ming",
    'age': 22,
    'city': 'Beijing',
}

people2 = {
    'first_name': 'Zhang',
    'Last_name': "Wei",
    'age': 25,
    'city': 'shanghai',
}

people3 = {
    'first_name': 'Liu',
    'Last_name': "Xiang",
    'age': 21,
    'city': 'shandong',
}

people = [people1, people2, people3]
for person in people:
    print(person)

5-9 喜欢的地方 :创建一个名为favorite_places 的字典。在这个字典中,将三个人的名字用作键;对于其中的每个人,都存储他 喜欢的1~3个地方。为让这个练习更有趣些,可让一些朋友指出他 们喜欢的几个地方。遍历这个字典,并将其中每个人的名字及其喜 欢的地方打印出来。

favorite_places = {
    'zsc': ['beijing', 'shandong', 'liaoning'],
    'ly': ['taiwan', 'shanghai', 'macau'],
    'ltt':['guangxi', 'shandong', 'beijing']
}

for key, value in favorite_places.items():
    print(key.title() +"'s favourite places are:")
    for place in value:
        print(place.title())

5-11 城市 :创建一个名为cities的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应包含country 、population 和fact 等键。将每座城市 的名字以及有关它们的信息都打印出来。

# 5-12
cities = {
    'beijing': {
        'country': 'China',
        'population': '2000w',
        'fact': 'The capital of China',
    },
    'new york': {
        'country': 'USA',
        'population': '862w',
        'fact': 'A fancy city in America',
    },
    'london': {
        'country': 'UK',
        'population': '750w',
        'fact': 'The capital of UK',
    },
}

for city , detail in cities.items():
    print(city.title() + ":")
    for key, value in detail.items():
        print(key + ':' + value)

?

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章           查看所有文章
加:2022-09-21 00:24:34  更:2022-09-21 00:28:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 10:36:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码