【Python学习】字典_02

# _*_ coding:utf-8 _*_
"""
name:zhangxingzai
date:2022/10/31
form:《Python编程从入门到实践》
"""

"""
写在前面,本章你将学到:
如何遍历字典中所有的键值对、所有的键和所有的值;
如何在列表中嵌套字典,在字典中嵌套列表,以及在字典中嵌套字典
"""

# 遍历字典中的所有键值对
user_0 = {'username': 'efermi', 'first': 'enrico', 'last': 'fermi'}
print(user_0.items())
for key, value in user_0.items():
    print(f'Key: {key}')
    print(f'Value: {value}')
# 这里遍历时同时声明了两个变量,这个是完全可以的。而后面items()方法,则返回的是一个键值对列表

favorite_languages = {
    'zhangsan': 'C',
    'lisi':'java',
    'wangwu': 'python',
    }
for name, language in favorite_languages.items():
    print(f'{name}喜欢的语言是{language}')

# 遍历字典中所有的键
favorite_languages = dict(zhangsan='C', lisi='java', wangwu='python')  
# 这个是用dict()方法来定义字典
# for name in favorite_languages:  此种写法默认遍历字典所有键,建议还是使用显示的方法keys()
for name in favorite_languages.keys():
    print(name)

favorite_languages = {'zhangsan': 'C', 'lisi': 'java', 'wangwu': 'python'}
friends = ['heliu', 'zhangsan']
for name in favorite_languages.keys():
    print(f'你的朋友{name}')
    if name in friends:
        language = favorite_languages[name]
        print(f'{name}喜欢的语言是{language}')

# 按照特定顺序遍历字典中所有键
favorite_languages = {'zhangsan': 'C', 'lisi': 'java', 'wangwu': 'python'}
for name in sorted(favorite_languages.keys()):  
# 使用sorted()方法来进行排序
    print(f'你的朋友{name}')

# 遍历字典中所有的值
favorite_languages = {'zhangsan': 'C', 'lisi': 'java', 'wangwu': 'python'}
print('最受欢迎的语言有:')
for language in favorite_languages.values():
    print(f'\t{language}')

# 给值去重
favorite_languages = {'zhangsan': 'python', 'lisi': 'java', 'wangwu': 'python'}
for language in set(favorite_languages.values()):
    print(f'受欢迎的语言有{language}')
# 使用集合set()中不可重复特性去重,集合暂不在这介绍,后面会有

# 讲字典存储在列表中,或将列表存储在字典中,这种称为嵌套
alien_0 = {'color': 'green', 'point': '5'}
alien_1 = {'color': 'yellow', 'point': '10'}
alien_2 = {'color': 'red', 'point': '15'}
aliens = [alien_0, alien_1, alien_2]
for alien in aliens:
    print(alien)

# 使用range()生成30个外星人
# 创建一个用来存储外星人的列表
aliens = []
# 创建30个绿色的外星人
for alien_number in range(30):
    new_alien = {'color': 'green', 'point': '5'}
    aliens.append(new_alien)
# 显示前5个外星人
for alien in aliens[:5]:
    print(alien)
print("...")
print(f'一共创建了{len(aliens)}个外星人')

# 扩展上面的循环,将前三个外星人修改为黄色,速度为中等且分值为10分
# 创建一个用来存储外星人的列表
aliens = []
# 创建30个绿色的外星人
for alien_number in range(30):
    new_alien = {'color': 'green', 'point': '5', 'speed': 'slow'}
    aliens.append(new_alien)
# 遍历前三个,并修改
for alien in aliens[:3]:
    if alien['color'] == 'green':
        alien['color'] = 'yellow'
        alien['point'] = '10'
        alien['speed'] = 'medium'
# 显示前5个外星人
for alien in aliens[:5]:
    print(alien)

# 继续扩展上面的循环,在其中添加一个elif代码块,将前5个中的黄色外星人修改为红色,速度为快等且分值为15分
for alien in aliens[:5]:
    if alien['color'] == 'green':
        alien['color'] = 'yellow'
        alien['point'] = '10'
        alien['speed'] = 'medium'
    elif alien['color'] == 'yellow':
        alien['color'] = 'red'
        alien['point'] = '15'
        alien['speed'] = 'fast'
# 显示前5个外星人
for alien in aliens[:5]:
    print(alien)

# 在字典中存储列表
# 存储点的披萨信息
pizza = {
    'crust': 'thick',
    'toppings': ['mushrooms', 'extra cheese'],
    }
# 概述点的披萨
print(f"你点的{pizza['crust']}披萨用料有:")
for topping in pizza['toppings']:
    print('\t' + topping)

# 每个人喜欢的语言
favorite_languages = {
    'zhangsan': ['python', 'C'],
    'lisi': ['go'],
    'wangwu': ['java', 'C']
    }
for name,languages in favorite_languages.items():
    print(f'{name}喜欢的语言是:')
    for language in languages:
        print('\t' + language.upper())
# 注意:列表和字典嵌套层级不应太多,如果嵌套比我们示例的还要多,那可能有其他简洁与快捷的解决方案

# 字典中存储字典,将用户名作为键,用户信息存储到字典中,该字典再作为用户名的关联值
users = {
    'panghu': {
        'first': 'san',
        'last': 'zhang',
        'location': 'Beijing',
        },
    'xiaopanghu': {
        'first': 'si',
        'last': 'li',
        'location': 'Shanghai',
        }
    }
# 将键值对分别提取出来
for username,user_info in users.items():
    print(f'\nUsername: {username}')
    full_name = f"{user_info['last']}{user_info['first']}"
    location = user_info['location']
    print(f'\tFull_name: {full_name.title()}')
    print(f'\tLocation: {location}')
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小胖虎*

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

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

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

打赏作者

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

抵扣说明:

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

余额充值