标签:就是 拷贝 简单 url module 之间 方法 pop dict
映射:
通过名称来访问值的数据结构
字典:
字典是Python唯一的内置映射类型
字典的值是无序的,存储在键下
键可以是数、字符串、元组
键必须是独一无二的
创建和使用字典:
字典是由花括号{}括起来的键值对
一个键值对为一项
每隔键和值都用冒号:分隔
项之间用逗号,分隔
空字典用就是空的花括号表示
>>> phonebook = {"Bne": 123, "Yuan": 456, "Bone": 789}
>>> namebook = {}
>>> phonebook
{‘Bne‘: 123, ‘Yuan‘: 456, ‘Bone‘: 789}
>>> namebook
{}
函数dict:
可以使用dict函数从其他映射或者键值对序列创建字典
>>> items = [("name", "Yuan"), ("age", 23)]
>>> d = dict(items)
>>> d
{‘name‘: ‘Yuan‘, ‘age‘: 23}
>>> d["name"]
‘Yuan‘
# 还可以使用关键字参数
>>> d = dict(name="Yuan", age=23)
>>> d
{‘name‘: ‘Yuan‘, ‘age‘: 23}
跟str、list、tuple一样,如果没有提供参数,dict返回的是一个空字典
>>> list()
[]
>>> str()
‘‘
>>> tuple()
()
>>> dict()
{}
字典操作:
# len(d)返回字典包含的项的数量
>>> d
{‘name‘: ‘Yuan‘, ‘age‘: 23}
>>> len(d)
2
# d[k]返回与键k相关联的值
>>> d
{‘name‘: ‘Yuan‘, ‘age‘: 23}
>>> d["age"]
23
# d[k] = v 将值v关联到k,若存在则修改,不存在则添加
>>> d
{‘name‘: ‘Yuan‘, ‘age‘: 23}
>>> d["name"] = "Bone"
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 23}
>>> d["aaa"] = "song"
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 23, ‘aaa‘: ‘song‘}
# del d[k] 删除键为k的项
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 23, ‘aaa‘: ‘song‘}
>>> del d["aaa"]
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 23}
# k in d 检查字典d是否包含键为k的项
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 23}
>>> "name" in d
True
>>> "a" in d
False
format_map:将字符串格式设置功能用于字典
通过在字典中存储一系列命名的值,使得格式设置更简单
>>> phonebook
{‘Bne‘: 123, ‘Yuan‘: 456, ‘Bone‘: 789}
>>> "Yuan‘s phone number is {Yuan}".format_map(phonebook)
"Yuan‘s phone number is 456"
字典方法:
clear() 删除字段所有项
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 23}
>>> d.clear()
>>> d
{}
copy() 返回一个副本,包含的项和原字典相同(浅复制)
>>> x = {"a": 123, "b": 444, "c": [1, 2, 6, "asd"]}
>>> y = x.copy()
>>> y["c"].remove("asd")
>>> y["a"] = "xxx"
>>> y
{‘a‘: ‘xxx‘, ‘b‘: 444, ‘c‘: [1, 2, 6]}
>>> x
{‘a‘: 123, ‘b‘: 444, ‘c‘: [1, 2, 6]}
# 这个方法执行的是浅复制,浅复制不会复制子对象,所以原始数据改变,子对象也会改变
deepcopy() copy模块中的函数,执行深复制,同时复制值和其包含的所有值
>>> from copy import deepcopy
>>> x = {"c": [1, 2, 6, "asd"]}
>>> y = x.copy()
>>> z = deepcopy(x)
>>> x["c"].append("666")
>>> x
{‘c‘: [1, 2, 6, ‘asd‘, ‘666‘]}
>>> y
{‘c‘: [1, 2, 6, ‘asd‘, ‘666‘]}
>>> z
{‘c‘: [1, 2, 6, ‘asd‘]}
# 深复制,包含对象里面的子对象的复制,所以原始对象的改变不会造成深拷贝里任何子元素的改变
fromkeys(seq[, val]) 返回一个字典,键都来自seq,值都为val(默认是None),可直接用dict调用
>>> {}.fromkeys(["name", "age"])
{‘name‘: None, ‘age‘: None}
# 上面先创建以个空字典然后调用方法来生成一个新字典,显然多余了,可以直接用dict调用
>>> dict.fromkeys(["name", "age"], "---")
{‘name‘: ‘---‘, ‘age‘: ‘---‘}
>>>
get(key[, defaule]) 访问字典的项,使用get访问不存在的键,不会报错,而是返回指定的defaule(默认是None)
>>> d
{}
>>> print(d["name"])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: ‘name‘
>>> print(d.get("name"))
None
items() 返回一个迭代器(实际是一个视图),包含字典的各项(key, value)对
>>> d = {"name": "Bone", "age": 25, "url": "www.python.org"}
>>> d.items()
dict_items([(‘name‘, ‘Bone‘), (‘age‘, 25), (‘url‘, ‘www.python.org‘)])
keys() 返回一个字典视图,包含字典的key
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 25, ‘url‘: ‘www.python.org‘}
>>> d.keys()
dict_keys([‘name‘, ‘age‘, ‘url‘])
values() 返回一个字典视图,包含字典的value
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 25, ‘url‘: ‘www.python.org‘}
>>> d.values()
dict_values([‘Bone‘, 25, ‘www.python.org‘])
pop(key[, d]) 删除并返回给定键的值,并删除键值对
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 25, ‘url‘: ‘www.python.org‘}
>>> d.pop("name")
‘Bone‘
popitem() 随机删除一项,并返回键值对
>>> d = {"name": "Bone", "age": 25, "url": "www.python.org"}
>>> d.popitem()
(‘url‘, ‘www.python.org‘)
setdefault(key[, default]) 类似get,如果key存在就返回对应的值,不存在就添加到字典中
>>> d = {"name": "Bone", "age": 25, "url": "www.python.org"}
>>> d.setdefault("name")
‘Bone‘
>>> d.setdefault("aa")
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 25, ‘url‘: ‘www.python.org‘, ‘aa‘: None}
>>> d.setdefault("aaa", "haha")
‘haha‘
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 25, ‘url‘: ‘www.python.org‘, ‘aa‘: None, ‘aaa‘: ‘haha‘}
update(other) 使用一个字典的项来更新另一个字典
>>> d = {"name": "Bone", "age": 25, "url": "www.python.org"}
>>> x = {"x": 1, "y":2, "age": 18}
>>> d.update(x)
>>> d
{‘name‘: ‘Bone‘, ‘age‘: 18, ‘url‘: ‘www.python.org‘, ‘x‘: 1, ‘y‘: 2}
>>> x
{‘x‘: 1, ‘y‘: 2, ‘age‘: 18}
标签:就是 拷贝 简单 url module 之间 方法 pop dict
原文地址:https://www.cnblogs.com/Mr-chenshuai/p/10016129.html