时间:2022-09-02 08:22:31 | 栏目:Python代码 | 点击:次
字典可用多种方式来创建:
dict_a = {key: value for key in 'python' for value in range(2)} list_phone = [('HUAWEI', '华为'), ('MI', '小米'), ('OPPO', 'OPPO'), ('VIVO', 'VIVO')] dict_c = {key: value for key, value in list_phone}
字典所支持的操作:
返回字典d 中使用的所有键的列表
返回字典d 中的项数
返回d 中以key 为键的项。如果映射中不存在key 则会引发KeyError。
如果字典的子类定义了方法__missing__() 并且key 不存在,则d[key] 操作将调用该方法并附带键key 作为参数。d[key] 随后将返回或引发__missing__(key) 调用所返回或引发的任何对象或异常。没有其他操作或方法会发起调用__missing__()。如果未定义__missing__(),则会引发KeyError。missing() 必须是一个方法;它不能是一个实例变量:
>>> class Counter(dict): ... def __missing__(self, key): ... return 0 >>> c = Counter() >>> c['red'] 0 >>> c['red'] += 1 >>> c['red'] 1
上面的例子显示了collections.Counter 实现的部分代码。还有另一个不同的__missing__方法是由collections.defaultdict 所使用的。
将d[key]设为value。
将d[key] 从d中移除。如果映射中不存在key 则会引发KeyError。
如果d中存在键key 则返回True,否则返回False。
返回以字典的键为元素的迭代器。这是iter(d.keys()) 的快捷方式。
移除字典中的所有元素。
返回原字典的浅拷贝
深copy
若你想彻底使2个dict完全独立,无论有多少层数据。那就要用python工具包里的一个工具了
import copy data = { "name":"alex", "age":18, "scores":{ "语文":130, "数学":60, "英语":98, } } d2 = data.copy() d3 =copy.deepcopy(data) d3["scores"]["语文"] = 149 print(d3) print(data)
函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值
seq = ('Google', 'Runoob', 'Taobao') thisdict = dict.fromkeys(seq) print "新字典为 : %s" % str(dict) thisdict = dict.fromkeys(seq, 10) print "新字典为 : %s" % str(thisdict) """ 新的字典为 : {'age': None, 'name': None, 'sex': None} 新的字典为 : {'age': 10, 'name': 10, 'sex': 10} """
如果key 存在于字典中则返回key 的值,否则返回default。如果default 未给出则默认为None,因而此方法绝不会引发KeyError。
dict.keys()
、dict.values()
和dict.items()
返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化tinydict = {'Name': 'Runoob', 'Age': 7} print ("Value : %s" % tinydict.items()) # Value : dict_items([('Age', 7), ('Name', 'Runoob')])
返回由字典键组成的一个新视图
dict.keys()
、dict.values()
和 dict.items()
返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化
a = {"a": 3, "b": 2} print(a.keys()) # <class 'dict_keys'>
删除字典给定键 key 所对应的值,返回值为被删除的值。
site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'} element = site.pop('name') print('删除的元素为:', element) print('字典为:', site) """ 删除的元素为: 菜鸟教程 字典为: {'alexa': 10000, 'url': 'www.runoob.com'} """
site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'} pop_obj=site.popitem() print(pop_obj) print(site)
返回一个逆序获取字典键的迭代器。这是reversed(d.keys()) 的快捷方式
setdefault() 方法和 get()方法 类似, 如果键不存在于字典中,将会添加键并将值设为默认值。
tinydict = {'Name': 'Runoob', 'Age': 7} print ("Age 键的值为 : %s" % tinydict.setdefault('Age', None)) print ("Sex 键的值为 : %s" % tinydict.setdefault('Sex', None)) print ("新字典为:", tinydict)
update() 函数把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里
tinydict = {'Name': 'Runoob', 'Age': 7} tinydict2 = {'Sex': 'female' } tinydict.update(tinydict2) print ("更新字典 tinydict : ", tinydict)
返回一个视图对象,dict.keys()、dict.values() 和 dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化
a = {"a": 3, "b": 2} print(a.values()) # dict_values([3, 2])
合并d 和other 中的键和值来创建一个新的字典,两者必须都是字典。当d 和other 有相同键时,other 的值优先。3.9才支持
a = {"apple": 3, "banana": 4}b = {"grape": 5, "banana": 8}print(a | b)
a = {"one": 1, "two": 2, "three": 3} a |= {"three": 30, "four": 4, "five": 5} print(a) a = {"apple": 3, "banana": 4} b = {"grape": 5, "banana": 8} a |= b print(a) """ {'one': 1, 'two': 2, 'three': 30, 'four': 4, 'five': 5} {'apple': 3, 'banana': 8, 'grape': 5} """