python 字典的操作方法

Dict 是python中一个类,是内置的类型中唯一个映射的类型。There is currently only one standard mapping type, the dictionary.
A mapping object maps hashable values to arbitrary objects. 映射一个哈希值到任意对象。所以key是可哈希的,是不可变数据类型。values是任意的对象,是可变和不可变都可以。
(For other containers see the built-in list, set, and tuple classes, and the collections module.)如果想对比于别的容器类型的可看内置的list,set,tuple,就是这四种类型在python中属于容器类型。别的都不是内置映射类型。别的类型都不是一一对应的值的关系。别的语言如C语言都没有这种映射的关系,可能是把c语言的指针的作用引入进来,C语言的指针也是把一个东西指向另外一个内容。所谓映射就是把这里面的内容强制的和另外的内容联系起来,变成另外的内容。
字典的键是用哈希的方法索引的随机值,每次哈希值都不一样。所以不能包含不可哈希的数据类型,即列表,字典等。

以下三种方法可创建字典:
(1)dict(**kwarg) 直接传键值对可以返回一个字典,如果是传的参数是空的话,返回一个空字典 例:

>
print(dict(one=1, two=2, three=3)) # 传的实参给dict函数时不能用引号,变量名标准必须符合,因为实际上就是传了个变量 # 给他
>
{‘one’: 1, ‘two’: 2, ‘three’: 3}

(2) dict(mapping, **kwarg)

print(dict(zip(['one', 'two', 'three'], [1, 2, 3])))
print((zip(['one', 'two', 'three'], [1, 2, 3]))) # 通过zip把两个列表一一映射成一个由二元元组组mapping对象,
                                                 # 可以通过这种方法创建字典
{'one': 1, 'two': 2, 'three': 3}
zip object at 0x000001D5CA27CEC8

(3)dict(iterable, **kwarg)

print(dict([('two', 2), ('one', 1), ('three', 3)]))  # 如果不传关键字参数的话,也可以传一个可迭代对象。

>

{'two': 2, 'one': 1, 'three': 3}

字典的操作方法
这里写图片描述

len(d)
d[key]
d[key] = value 设置一个新的值
key in d Return True or False key 是否在键中
key not in d
iter(d) 返回由key组成的迭代器

a = {'jack': 4938, 'sj': 8546}
print(iter(a))
print(next(iter(a)))
<dict_keyiterator object at 0x000001A22BAFC908>
jack

del d[key]
clear()
copy()

a = {'jack': 4938, 'snaj': {'andy': 5764}, 'sj': 8546}
b = a.copy()   # 浅复制,和list的浅复制原理是一样的,复制的是内层的地址,其他的是俩个地址
print(b)        
b['snaj']['andy'] = 0
print(a)
print(b)
c = dict.fromkeys(a, 0)  # 初始化字典,重新给字典赋新值。
print(c)
c['jack'] = 4
print(c)

>

{'jack': 4938, 'snaj': {'andy': 5764}, 'sj': 8546}
{'jack': 4938, 'snaj': {'andy': 0}, 'sj': 8546}
{'jack': 4938, 'snaj': {'andy': 0}, 'sj': 8546}
{'jack': 0, 'snaj': 0, 'sj': 0}
{'jack': 4, 'snaj': 0, 'sj': 0}

get(key[,default]) 返回健的值,如果不存在可以返回指定值,默认为None

a = {'jack': 4938, 'snaj': {'andy': 5764}, 'sj': 8546}
print(a.get('s'))
print(a.get('jack'))
print(a.get('j','not exist'))

>

None
4938
not exist

items() 返回键值元组视图,
keys()
pop(key) 会报错,如果不设置返回值的话
popitem() 3.6后默认删除最后一个
setdefault(key[,default])
update([other])
values()

猜你喜欢

转载自blog.csdn.net/weixin_42233629/article/details/81916752