Python学习3(字典)

字典

相关概念:
在Python中,字典是一系列键-值对。每个键都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何Python对象用作字典中的值。
(以下均使用dict代表一个字典名)

使用字典

相关使用:

# #使用字典
# 访问字典中的值
alien_0 = {'color': 'green', 'points': '5'}   # {'键’:‘值’,‘键’:‘值’。。。。。}
print("You just earned " + str(alien_0['points']) + " points.")
print("\n")

# 添加键值对
print(alien_0)  # 打印之前的字典

alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)             # 注意,键—值对的排列顺序与添加顺序不同。Python不关心键—值对
print("\n")                # 的添加顺序,而只关心键和值之间的关联关系。

# 创建空字典
alien_1 = { }
alien_1['color'] = 'red'
alien_1['points'] = 10
# print("分数:" + str(alien_1['color']))  #数字要以str形式打出来

# 修改字典的值
alien_1['color'] = 'yellow'
print(alien_1)

# 删除键值对
del alien_1['points']
print(alien_1)    # 字典不太允许和别的内容一起输出
print("\n")

创建空字典前需要声明:dict = { }

  • 创建字典格式:dict = {key1:value1,key2:value2,key3:value3,…}
  • 添加键值对的格式:dict[key] = value
  • 删除键值对格式:del dict[key]

注意: 键—值对的排列顺序与添加顺序不同。Python不关心键—值对的添加顺序,而只关心键和值之间的关联关系。
使用结果:
在这里插入图片描述
其实,也可以使用字典来存储众多对象的同一种信息。
例如:

# 由类似对象组成的字典
favorite_languages = {
    'tom': 'python',
    'jack': 'c',
    'mary': 'c++',
    'sarah': 'java'
}
print("Sarah's favorite language is " +
      favorite_languages['sarah'].title() +
      "." + "\n")

Test:
对一个能够以不同速度移动的外星人的位置进行跟踪

print("对一个能够以不同速度移动的外星人的位置进行跟踪:")
alien_2 = {'x_position': 0, 'y_position': 25, 'speed': 'medium'}
print("Original x_position: " + str(alien_2['x_position']))

if alien_2['speed'] == 'slow':
    x_increment = 1
elif alien_2['speed'] == 'medium':
    x_increment = 2
else:
    x_increment = 3

alien_2['x_position'] = alien_2['x_position'] + x_increment
print("New x_position: " + str(alien_2['x_position']) + "\n")

遍历字典

遍历所有键值对、键、值:

# #遍历字典
print("遍历字典:")
favorite_languages = {
    'tom': 'python',
    'jack': 'c',
    'mary': 'c++',
    'sarah': 'java'
}
# 遍历所有的键值对   操作内容为上述字典(人名:语言)
print(favorite_languages.items())      # dict.items()返回一个键—值对列表

for name, language in favorite_languages.items():   # 将每一个键值对储存到两个变量之中
    print(name.title() + "'s favorite language is " + 
          language.title() + ".")
print("\n")

# 遍历字典中所有的键
for name in sorted(favorite_languages.keys()):      # 顺带排个序
    print(name.title() + ",thanks for your poll")
print("\n")

# 遍历字典中所有的值
print("The below languages have been mentioned:")
for language in favorite_languages.values():
    print(language.title())
print("\n")
  • 使用dict.items( ),返回一个键-值对列表:dict_items([(key1,value1),(key2,value2),(key3,value3)… ] )
  • 使用for key, value in dict.items( ): 遍历键-值对。
  • 使用for key in dict.keys( ): 遍历字典中所有的键。
  • 使用for value in dict.values( ): 遍历字典中所有的键。

遍历结果:
在这里插入图片描述

Test:
湖北、浙江、南京三省的985高校

# 字典小测试:湖北、浙江、南京三省的985高校
print("字典小测试:湖北、浙江、南京三省的985高校:")
college_985 = {}
college_985['nanjing'] = ['nanjin University', 'dongnan University']
college_985['hubei'] = ['wuhan University', 'Huazhong University of Science and Technology']
college_985['zhejiang'] = ['zhejiang University']

for province,college in college_985.items():
    print(province.title() + "'s 985 colleges are" + ",".join(str(x) for x in college))
                                       # 这里用到如何一条语句输出列表所有内容

嵌套

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

print("嵌套:")
# 字典列表
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)

在字典中储存列表以及在列表中储存字典:

# 在字典中存储列表(前面的字典小测试 三省的985高校也是)
favorite_languages = {'jen': ['python', 'ruby'],
                      'sarah': ['c'],
                      'edward': ['ruby', 'go'],
                      'phil': ['python', 'haskell'], }

for name, languages in favorite_languages.items():
    print("\n" + name.title() + "'s favorite languages are:")
    for language in languages:
        print("\t" + language.title())        # 这个方法就略微小蠢  上面有一句可以直接输出列容(不带[])

# 在字典中存储字典
users = {
    'Tom': {
        'first': 'Tom',
        'last': 'bruise',
        'location': 'America',
    },

    'Mary': {
        'first': 'Mary',
        'last': 'Jan',
        'location': 'England',
    }
}

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

    print("\tFull name: " + full_name.title())
    print(("\tlocation: " + location).title())

操作结果:
在这里插入图片描述
Test:
创建30个外星人

# 创建多个外星人 并修改前3个外星人的信息
print("创建多个外星人 并修前3个外星人的信息:")
# 创建一个用于存储外星人的空列表
aliens = []

# 创建30个外星人
for alien_number in range(30):
    new_alien = {'color': 'green', 'points': 5}
    aliens.append(new_alien)

for alien in aliens[0:3]:
    for alien in aliens[0:3]:
        if alien['color'] == 'green':
            alien['color'] = 'yellow'
            alien['speed'] = 'medium'
            alien['points'] = 10

# 显示前5个外星人的信息
for alien in aliens[0:5]:
    print(alien)
print("...")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值