Python字典

— If a person can not control his temper, temper will control you.Isaac Newton

一、字典

python字典可以将相关的信息关联起来。例如引用要保存某个用户的信息(年龄,性别,身高等),就需要使用字典来储存这个用户的多个属性信息。

# 简单示例
curry = {'age': 34, 'height': '188cm', 'team': 'Warriors','number': 30}
print(curry)
print(type(curry))
# 运行输出结果
{'age': 34, 'height': '188cm', 'team': 'Warriors', 'number': 30}
<class 'dict'>

1.1 定义字典

python字典:

  • 由一系列键值对构成;
  • 每个键都与值关联,可以用键来访问其关联的值;
  • 与键关联的可以是数值,字符串,列表乃至字典,以及任何其他python对象。
# 简单示例
curry = {'age': 34, 'height': '188cm', 'team': 'Warriors','number': 30}
print(curry)
# 运行输出结果
{'age': 34, 'height': '188cm', 'team': 'Warriors', 'number': 30}

如上所示:

  • 字典用放在 {} 的一系列键值对构成;
  • 键值之间用冒号分隔,键值对之间用逗号分隔。注意与列表区别。

1.2 访问字典

要获取字典中与键关联的值,需一次指定字典名和方括号中的键。

# 示例
curry = {'age': 34, 'height': '188cm', 'team': 'Warriors','number': 30}
print(curry['height'])
print('Curry\'s height is %s.'%(curry['height']))
# 运行输出结果
188cm
Curry's height is 188cm.

1.3 添加键值对

字典是动态的结构,可以随时添加,修改和删除键值对。可依次指定字典名和中括号括起的键和其关联的值

# 示例
curry = {'age': 34, 'height': '188cm', 'team': 'Warriors'}
curry['number'] = 30
print(curry)
# 运行输出结果
{'age': 34, 'height': '188cm', 'team': 'Warriors', 'number': 30}

在字典curry中新增一个键 ‘number’, 其关联的值为 30. 另外python不关心键值对的添加顺序,再在乎键值对之间的关联。

1.4 修改字典中的值

在一些应用中,某些属性以变化的如用户年龄,账号的余额,游戏任务的技能,因此,我们需要对某个属性进行修。与添加键值对类似的修改字典的值。

# 示例
curry = {'age': 34, 'height': '188cm', 'team': 'Warriors'}
curry['number'] = 35  # 指定键,和需要修改的值.
print(curry)
# 运行输出结果
{'age': 35, 'height': '188cm', 'team': 'Warriors'}

1.5删除键值对

删除键值对需要使用 del 语句,指定字典名和所删除的键。

# 示例
curry = {'age': 34, 'height': '188cm', 'team': 'Warriors'}
del curry['age'] # 指定键
print(curry)
# 运行输出结果
{'height': '188cm', 'team': 'Warriors'}

1.6 类似对象构成的字典

前面字典储存了每一个对象的多个属性,你也可以储存多个对象的一个属性。

# 示例
player_height = {
    'Stephen Curry': '188cm',
    'Klay Thompson': '198cm',
    'Andrew Wiggins': '201 cm'
    } # 可以看到属性都是身高, 另外适当注意格式排版

二、遍历字典

我们可以遍历字典中的键值对,键或值。

2.1 遍历键值对

# 示例
player_height = {
    'Stephen Curry': '188cm',
    'Klay Thompson': '198cm',
    'Andrew Wiggins': '201cm'
}
for key,value in player_height.items():
    print(key + ': ' + value)
    
# 建议使用 name和height作为临时变量易于阅读,即
#for name, height in player_height.items():
#	print(name + ': ' + height)

# 运行输出结果
Stephen Curry: 188cm
Klay Thompson: 198cm
Andrew Wiggins: 201cm

其中方法 items() 作用: 以列表返回可遍历的(键, 值) 元组数组。

2.2 遍历字典的所有键

使用方法 keys() 提取字典的所有键

# 示例
 player_height = {
    'Stephen Curry': '188cm',
    'Klay Thompson': '198cm',
    'Andrew Wiggins': '201cm'
}
for player in player_height.keys():
    print(player)

# 上面的代码等同于
for player in player_height: # 即可省略方法 keys()
    print(player)

# 运行输出结果
Stephen Curry
Klay Thompson
Andrew Wiggins

上述代码,想提取字典的所有键,然后依次将键储存到临时变量player中,打印出来。

2.2.1 方法 keys

方法 keys() 返回一个列表,该列表包含字典的所有键。

# 示例
player_height = {
    'Stephen Curry': '188cm',
    'Klay Thompson': '198cm',
    'Andrew Wiggins': '201cm'
}
player = player_height.keys()
print(player)

# 按一定的顺序遍历键
for player in sorted(player_height.keys()):
    print(player)

# 运行输出结果
dict_keys(['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins'])

Andrew Wiggins
Klay Thompson
Stephen Curry

2.3 遍历字典的所有值

使用方法 values() 返回字典的所有值,使用与方法 keys() 一致。

# 示例
player_height = {
    'Stephen Curry': '188cm',
    'Klay Thompson': '198cm',
    'Andrew Wiggins': '201cm',
    'Kawhi Leonard': '201cm'
}
player = player_height.values()
print(player)
# 上面的做法可以提取字典的所有值, 而没有考虑这些值是由有重复。

# 对包含重复的列表调佣 set() 则可以找到独一无二的值来创建一个集合。
player = set(player_height.values())
print(player)

# 运行输出结果
dict_values(['188cm', '198cm', '201cm', '201cm'])
{'188cm', '201cm', '198cm'}

三、嵌套

将一系列的列表作为值储存在字典中,或将一系列字典储存在列表中,称为嵌套。

3.1 列表套字典

# 示例
Curry = {'age': 34, 'height': '188cm', 'team': 'Warriors'}
Thompson = {'age': 32, 'height': '198cm', 'team': 'Warriors'}

players = [Curry, Thompson]
print(players)
    
# 运行输出结果
[{'age': 34, 'height': '188cm', 'team': 'Warriors'}, {'age': 32, 'height': '198cm', 'team': 'Warriors'}]

加入循环和判断语句的简单例子:

# 示例
Curry = {'age': 34, 'height': '188cm', 'team': 'Warriors'}
Thompson = {'age': 32, 'height': '198cm', 'team': 'Warriors'}

players = [Curry, Thompson]
for player in players:
    h = int(player['height'][:3])
    if h < 190:
        player['position'] = 'PG'
    elif 190 <= h < 200:
        player['position'] = 'SG'
print(players)
# 运行输出结果
[{'age': 34, 'height': '188cm', 'team': 'Warriors', 'position': 'PG'}, {'age': 32, 'height': '198cm', 'team': 'Warriors', 'position': 'SG'}]

3.2 字典套列表

# 示例
Champions = {'Stephen Curry': [2015, 2017, 2018, 2022],
             'LeBron James' : [2012, 2013, 2016, 2020]
             }
print(Champions)
# 运行输出结果
{'Stephen Curry': [2015, 2017, 2018, 2022], 'LeBron James': [2012, 2013, 2016, 2020]}

3.3 列表套列表,字典套字典

列表套列表

# 示例
players = ['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins']
years = [2015, 2017, 2018, 2022]
Warriors = [players, years]
print(Warriors)
# 运行输出结果
[['Stephen Curry', 'Klay Thompson', 'Andrew Wiggins'], [2015, 2017, 2018, 2022]]

字典套字典

# 示例
Warriors = {'Stephen Curry': {'age': 34, 'height': '188cm', 'team': 'Warriors'},
           'Klay Thompson': {'age': 32, 'height': '198cm', 'team': 'Warriors'}
           }
print(Warriors)
# 运行输出结果
{'Stephen Curry': {'age': 34, 'height': '188cm', 'team': 'Warriors'}, 'Klay Thompson': {'age': 32, 'height': '198cm', 'team': 'Warriors'}}

四、完结

🌸🌸🌸撒花🌸🌸🌸

If you feel happy, clap your hands.👏👏👏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值