Python 字典的遍历

遍历字典

  • 多种遍历字典的方式,可遍历所有键——值对、键或值

遍历所有的键—值对

  • 声明两个变量,用于存储键—值对中的键和值,对于这两个变量可以用任何名称
  • 包含字典名和方法items(),它返回一个键—值对列表
  • 遍历字典时,键—值对的返回顺序也与存储顺序不同,python不关心键—值对的存储顺序,只跟踪键和值之间的关联关系
user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
}
# 声明两个变量,用于存储键—值对中的键和值,对于这两个变量可以用任何名称
for key,value in user_0.items():
    print("Key: " + key)
    print("Value: " + value)
for k,v in user_0.items():
    print("Key: " + key)
    print("Value: " + value)
Key: username
Value: efermi
Key: first
Value: enrico
Key: last
Value: fermi
Key: last
Value: fermi
Key: last
Value: fermi
Key: last
Value: fermi
favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
}
for name, language in favorite_languages.items():
    print(name.title() + " 's favorite language is " + 
          language.title() + ".")
Jen 's favorite language is Python.
Sarah 's favorite language is C.
Edward 's favorite language is Ruby.
Phil 's favorite language is Python.

遍历字典中的所有键

  • 在不需要使用字典中的值时,使用方法keys()
  • 遍历字典时默认会遍历所有的键
  • 可通过键来访问当前相关联的值
  • 方法keys()并非只用于遍历,实际上它返回一个列表,其中包含字典中的所有键
favorite_languages = {
    'fen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
}
# 遍历字典时默认遍历所有的键,
# for name in favorite_languages:
for name in favorite_languages.keys():
    print(name.title())
Fen
Sarah
Edward
Phil
# 可通过键来访问当前相关联的值
favorite_languages = {
    'fen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
}
friend = ['phil','sarah']
for name in favorite_languages.keys():
    print(name.title())
    if name in friend:
        print("Hi " + name.title() + 
             ", I see your favorite language is " + 
             favorite_languages[name].title() + "!")
Fen
Sarah
Hi Sarah, I see your favorite language is C!
Edward
Phil
Hi Phil, I see your favorite language is Python!
# 方法keys()并非只用于遍历 
favorite_languages = {
    'fen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
}
if 'erin' not in favorite_languages.keys():
        print("Erin, please take our poil!")
Erin, please take our poil!

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

  • 获取字典的元素时,获取顺序是不可预测的
  • 获取特定顺序排列的键的值,使用函数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.

遍历字典中的所有值

  • 只关注字典中的值,使用方法values(),它返回一个值列表,不包含任何键。
  • 提取字典中所有值时,考虑值重复,去除重复项使用集合set,它类似于列表。
# 遍历字典中的值,使用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())
The following languages have been mentioned:
Python
C
Ruby
Python
# 去除字典中重复的值,使用set集合
favorite_languages = {
    'jen' : 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
}
print("The following languages have been menthioned:")
for language in set(favorite_languages.values()):
    print(language.title())
The following languages have been menthioned:
C
Ruby
Python

练习

# 1.词汇表2:
# 将其中的一系列 print 语句替换为一个遍历字典中的键和值的循环。确定该
# 循环正确无误后,再在词汇表中添加 5 个 Python 术语。当你再次运行这个程序时,
# 这些新术语及其含义将自动包含在输出中。
# 词汇表1
# Python 字典可用于模拟现实生活中的字典,但为避免混淆,我们将后者称为词汇表。
# 想出你在前面学过的 5 个编程词汇,将它们用作词汇表中的键,并将它们的含义作为值存储在词汇表中。
# 以整洁的方式打印每个词汇及其含义。为此,你可以先打印词汇,在它后面加上一个冒号,再打印词汇的含义;也可在一行打印词汇,再使用换行符( \n )插
# 入一个空行,然后在下一行以缩进的方式打印词汇的含义。
words = {
    'title': '首字母大写',
    'upper': '所有字母大写',
    'lower': '所有字母小写',
    'append': '列表尾部插入一元素',
    'pop': '列表中删除一元素'
}
word = 'title'
print("\n" + word.title() + "的含义是:" + words['title'] + ".")
word = 'upper'
print("\n" + word.upper() + "的含义是:" + words['upper'] + ".")
word = 'lower'
print("\n" + word.lower() + "的含义是:" + words['lower'] + ".")
word = 'append'
print("\n" + word.title() + "的含义是:" + words['append'] + ".")
word = 'pop'
print("\n" + word.title() + "的含义是:" + words['pop'] + ".\n")
print("#" * 50)
################################################################

for word,content in words.items():
    print("\n" + word.title() +"的含义是:" + content.title() + ".")
Title的含义是:首字母大写.

UPPER的含义是:所有字母大写.

lower的含义是:所有字母小写.

Append的含义是:列表尾部插入一元素.

Pop的含义是:列表中删除一元素.

##################################################

Title的含义是:首字母大写.

Upper的含义是:所有字母大写.

Lower的含义是:所有字母小写.

Append的含义是:列表尾部插入一元素.

Pop的含义是:列表中删除一元素.
# 2.河流
# 创建一个字典,在其中存储三条大河流及其流经的国家。其中一个键 — 值对可能是 'nile': 'egypt' 。
# 使用循环为每条河流打印一条消息,如 “The Nile runs through Egypt.” 。
# 使用循环将该字典中每条河流的名字都打印出来。
# 使用循环将该字典包含的每个国家的名字都打印出来。
rives = {
    'chang jaing': 'qing zang',
    'huang he': 'qing hai',
    'hei long jiang': 'hei long jiang',
}
for river,city in rives.items():
    print("The " + river.title() + 
          " runs through " + city.title() + ".")
print("\nThe following rivers are included in this data set:")
for river in rives.keys():
    print(river.title())
print("\nThe following rivers are included in this data set:")
for city in rives.values():
    print(city.title())
The Chang Jaing runs through Qing Zang.
The Huang He runs through Qing Hai.
The Hei Long Jiang runs through Hei Long Jiang.

The following rivers are included in this data set:
Chang Jaing
Huang He
Hei Long Jiang

The following rivers are included in this data set:
Qing Zang
Qing Hai
Hei Long Jiang
# 3.调查
# 创建一个应该会接受调查的人员名单,其中有些人已包含在字典中,而其他人未包含在字典中。
# 遍历这个人员名单,对于已参与调查的人,打印一条消息表示感谢。对于还未参与调查的人,打印一条消息邀请他参与调查。
favorite_languages = {
    'jen': 'python',
    'sarah': 'c',
    'edward': 'ruby',
    'phil': 'python',
    }
for name,language in favorite_languages.items():
    print(name.title() + "'s favorite language is " + language.title() + ".")
print('\n')
coders = ['phil','json','david','becca','sarah','matt']
for coder in coders:
    if coder in favorite_languages.keys():
        print("Thank you for taking the poll," + coder.title() + "!")
    else:
        print(coder.title() + " Looking forward to your juining!")
Jen's favorite language is Python.
Sarah's favorite language is C.
Edward's favorite language is Ruby.
Phil's favorite language is Python.


Thank you for taking the poll,Phil!
Json Looking forward to your juining!
David Looking forward to your juining!
Becca Looking forward to your juining!
Thank you for taking the poll,Sarah!
Matt Looking forward to your juining!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YEGE学AI算法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值