字典

字典是什么

在 Python 中,字典 是一系列键 — 值对 。每个键 都与一个值相关联,你可以使用键来访问与之相关联的值。与键相关联的值可以是数字、字符串、列表乃至字典。事实上,可将任何 Python 对象用作字典中的值。dictionary(字典)是除列表以外python中最灵活的数据类型

字典和列表的区别

列表是有序的对象集和
字典是无序的对象集和

字典的表示

字典用{}定义,字典使用键值对存储数据,键值对之间使用,分隔,键key是索引,值value是数据,键和值之间使用;分隔,键必须是唯一的(因为我们必须通过键来找到数据,值可以取任何数据类型,但键只能使用字符串,数字或元组,字典是一个无序的数据集和,使用print函数输出字典时, 通常输出的顺序和定义的顺序是不一致的
举例:

定义一个存储学生信息的字典
message_dict = {
‘name’ : ‘guodong’,
‘age’ : ‘21’,
‘sex’ : ‘M’,
‘weight’ : ‘140’,
‘height’ : ‘180’}
print message_dict

1:取值,根据索引(key)取值,取值时,索引用中括号括起来

message_dict = {
‘name’ : ‘guodong’,
‘age’ : ‘21’,
‘sex’ : ‘M’,
‘weight’ : ‘140’,
‘height’ : ‘180’}

取字典中索引为name的值

print message_dict[‘name’]

2:增加/删除

增加:索引使用中括号括起来
message_dict[‘id’] = ‘05’
print message_dict
删除:索引使用小括号括起来
message_dict.pop(‘id’)
print message_dict
3:统计键值对的数量
print len(message_dict)
4:添加字典里面已经存在的元素,会将以前元素内容修改
message_dict[‘age’] = 22
print message_dict
5:合并字典,如果与原字典键值索引重复,则会被更新
sex_dict = {‘sex’:‘man’,
‘grade’:4}

将message_dict字典与sex_dict字典合并

message_dict.update(sex_dict)
print message_dict

字典的遍历
遍历所有的键-值对

可以使用一个 for 循环来遍历字典

message_dict = {
‘name’ : ‘guodong’,
‘age’ : ‘21’,
‘sex’ : ‘M’,
‘weight’ : ‘140’,
‘height’ : ‘180’}
for key,value in message_dict.items():
print (“key:” + key)
print (“value:” + value)

遍历字典中的所有键
在不需要使用字典中的值时,方法 keys() 很有用,需要值时用value()。下面来遍历字典favorite_languages ,并将每个被调查者的名字都打印出来:

favorite_languages = {
‘jen’: ‘python’,
‘sarah’: ‘c’,
‘edward’: ‘ruby’,
‘phil’: ‘python’,
}
for name in favorite_languages.keys():

打印遍历后的键,并用title方法将键的首字母变成大写

print(name.title())
遍历字典时,会默认遍历所有的键,因此,如果将上述代码中的 for name in favorite_languages.keys(): 替换为 for name in favorite_languages: ,输出
将不变。
如果显式地使用方法 keys() 可让代码更容易理解,你可以选择这样做,但如果你愿意,也可省略它。
按顺序遍历字典中的所有键

字典总是明确地记录键和值之间的关联关系,但获取字典的元素时,获取顺序是不可预测的。这不是问题,因为通常你想要的只是获取与键相关联的正确的值。
要以特定的顺序返回元素,一种办法是在 for 循环中对返回的键进行排序。为此,可使用函数 sorted() 来获得按特定顺序排列的键列表的副本

favorite_languages = {
‘jen’ : ‘python’,
‘sarah’ : ‘c’,
‘edward’ : ‘ruby’,
‘phil’ : ‘python’
}

使用sorted函数对字典中的键进行排序

for name in sorted(favorite_languages):
print (name.title())

遍历字典中的所有值
如果你感兴趣的主要是字典包含的值,可使用方法 values() ,它返回一个值列表,而不包含任何键。例如,如果我们想获得一个这样的列表,即其中只包含被调查者选择的各种语言,而不包含被调查者的名字,可以这样做:

favorite_languages = {
‘jen’: ‘python’,
‘sarah’: ‘c’,
‘edward’: ‘ruby’,
‘phil’: ‘python’,
}
print(“The following languages have been mentioned:”)

使用values方法遍历字典中的所有值

for language in favorite_languages.values():
print(language.title())

这种做法提取字典中所有的值,而没有考虑是否重复。涉及的值很少时,这也许不是问题,但如果被调查者很多,最终的列表可能包含大量的重复项。为剔除重复项,可使用集合( set( )。集合 类似于列表,但每个元素都必须是独一无二的:

favorite_languages = {
‘jen’: ‘python’,
‘sarah’: ‘c’,
‘edward’: ‘ruby’,
‘phil’: ‘python’,
}
print(“The following languages have been mentioned:”)

使用集合set剔除重复项

for language in set(favorite_languages.values()):
print(language.title())

嵌套

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

列表中存放字典
一个字典只能存储一种动物的信息,但无法存储第二种动物的信息,更别说是一群动物了,如何管理成群结队的动物呢,我们可以创建一个动物列表,其中每种动物是一个字典,包含这种动物的各种信息,我们来创建一个包含三种动物的列表:

定义三个动物字典

animal_01 = {‘var’ : ‘dog’,‘env’ : ‘land’}
animal_02 = {‘var’ : ‘bird’,‘env’ : ‘sky’}
animal_03 = {‘var’ : ‘fish’, ‘env’ : ‘ocean’}

定义一个动物列表

animals = [animal_01,animal_02,animal_03]

遍历动物列表,打印出每种动物

for animal in animals:
print animal
字典中存放列表
有时候,需要将列表存储在字典中,而不是将字典存储在列表中。例如,你如何描述顾客点的比萨呢?如果使用列表,只能存储要添加的比萨配料;但如果使用字典,就不仅可在其中包含配料列表,还可包含其他有关比萨的描述。
在下面的示例中,存储了比萨的两方面信息:外皮类型和配料列表。其中的配料列表是一个与键 ‘toppings’ 相关联的值。要访问该列表,我们使用字典名和键 ‘toppings’,就像访问字典中的其他值一样。这将返回一个配料列表,而不是单个值

存储所点比萨的信息

pizza = {
‘crust’: ‘thick’,
‘toppings’: [‘mushrooms’, ‘extra cheese’], #配料列表
}

概述所点的比萨

print(“You ordered a " + pizza[‘crust’] + “-crust pizza " +
“with the following toppings:”)
for topping in pizza[‘toppings’]:
print(”\t” + topping)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值