python字典复习

微信扫一扫,分享到朋友圈

python字典复习
收藏 00

字典:字典是一种映射类型(mapping type), 是由键值对组成的,字典的每个元素都有不同的键(key)与之对 应,需要通过键来访问元素,字典里的元素排列是无序的,因此字典不是序列类型。因此,字典的键的类型必需是 不可变类型(布尔类型、整数类型、浮点数类型、字符串类型、元组类型以及不可变集合类型)。但是字典也是可 变类型,因此字典是不能作为字典的键的,不可变类型其实就是说这个类型的值是可哈希的,用python内置的 hash函数就可以检验。

字典的创建

使用{}创建字典

# 创建空字典
d1 = {}
# 创建有元素的字典
d2 = {'a': 1, 'b': 2, 'c': 3}
# python的键必需是不可变类型,值可以是任意的类型
d3 = {1: "hello", "name": "brooks", (1, 2): 3.1415, 1.414: [1, 2, 4, 5], True: {"help": 30}}

使用dict函数创建字典

# 创建空字典
d1 = dict()
# 创建有元素的字典
d2 = dict([(1, 'a'), (2, 'b'), (3, 'c')])
# 注意:使用dict创建字典的时候,参数必需是可迭代类型,参数的元素必须是成对出现的,元素的第一个值作为字典
的键,第二个值作为字典的值。这种类型的参数可以直接通过zip或者是map函数来快速创建
# 下面的这几种形式都是支持的
# 1. 两个元素组成的二维列表: [['a', 1], ['b', 2], ['c', 3], ['d', 4]]
# 2. 包含双值元组的列表: [('a', 'b'), ('c', 'd'), ('e', 'f')]
# 3. 包含双值列表的元组: (['a', 1], ['b', 2], ['c', 3], ['d', 4])
# 4. 包含双值元组的元组: (('a', 'b'), ('c', 'd'), ('e', 'f'))
# 5. 双字符字符串组成的列表: ['ab', 'cd', 'ef', 'gh']
# 6. 双字符字符串组成的元组: ('ab', 'cd', 'ef')
# 7. 上面的可以互相嵌套: [['a', 1], ('c', 'd'), 'a1',((3,), ['a', 12.4])] 猜猜这个会生成啥,写手写再用python运行验证

字典的相关操作(增删改查)

访问字典中的值

字典中的值都是通过键名来直接访问的,也可以通过用内键方法get来访问

#字典中的值都是通过键名来直接访问的
dict1 = {'name': 'brooks', 'age': 18, 'score': 99.9, 'fav': 'program'}
>>> dict1['name']
'brooks'
# 使用内键方法get来访问,get方法接收两个参数,第一个是键名,第二个是默认值
# 默认值的意思就是说,假如键名不存在,就返回默认值, 默认值默认是None
>>> dict1.get('name')
'brooks'
>>> dict1.get('haha') # 不存在,返回默认值None
None
>>> dict1.get("what", "hehe") # 不存在,返回自定义的默认值hehe
"hehe"
# 使用字典内建方法setdefault来访问字典中的键,该方法接收两个参数,第一个是键名,
# 第二个是默认值None。如果键名存在,就返回键名对应的值,如果键名不存在,则
# 在字典中创建一个键名,并把默认值设为对应的值。
>>> dict1.setdefault('name')
'brooks'
>>> dict1.setdefault('you')
>>> dict1.setdefault('wait', 10)
# 通过for循环来访问字典中的元素,for循环默认迭代的是字典中的键(key)
for key in dict1:
print dict1[key]
# items返回的是类集合对象的dict_items对象,需要使用for循环才能遍历获取里面的元素
for key, val in dict1.items():
print key, val

修改字典中的值

#修改字典中的值也是通过键名来修改的
dict1 = {'name': 'brooks', 'age': 18, 'score': 99.9, 'fav': 'program'}
dict1['name'] = 'jonny'

给字典添加新元素

# 当给字典一个不存在的键名赋值时,字典就会自动的创建对应的键名并把值给它
dict1 = {'name': 'brooks', 'age': 18, 'score': 99.9, 'fav': 'program'}
dict1['salary'] = 10000
# 将另一个字典中的元素添加进来
dict2 = {1: 'a', 2: 'b'}
dict1.update(dict2) # 将dict2中的所有键值对添加到dict1中

删除字典中的元素和字典

# 删除指定键名的元素
dict1 = {'name': 'brooks', 'age': 18, 'score': 99.9, 'fav': 'program'}
del dict1['age'] # 把键名为age的元素删除
dict1.pop('name') # 把键名为name的元素删除并返回它的值
# 清空整个字典(删除字典里面的所欲元素)
dict1.clear()
# 删除字典
del dict1

查询字典中是否存在某个键

# 使用成员操作符(in, not in)查询字典中是否存在某个键名
dict1 = {'name': 'brooks', 'age': 18, 'score': 99.9, 'fav': 'program'}
>>> 'name' in dict1
True
>>> 'name' not in dict1
False

总结

  1. 字典是一种映射类型,是由键值对组成的,其中字典的键必需是可哈希的(也就是不可变的),而且同一个 字典内不能出现同样的键名;字典的值可以是任意类型,同时字典的值是可以重复的。
  2. 字典也是一种容器类型,容器类型包括字符串、列表、元组、字典、集合,因为这些类型就像一个容器一样 可以装一堆的东西,所以叫容器类型(不要求记住)。所有的容器类型都是可迭代的,也就是可以通过循环 语句一个个的把里面的元素拿出来的。所有的容器类型都可以通过len()方法来得到里面元素的个数。
  3. 字典是可变类型,因此可以对字典进行增删改查等操作。
一个热爱互联网的咸鱼
上一篇

掌握搜索引擎高级搜索指令让seo更简单

下一篇

自建v2ray服务器科学上网教程

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片

热门

    抱歉,30天内未发布文章!
返回顶部