(三)字典

字典内置函数&方法

 dict.fromkeys([seq], val):创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值

v = dict.fromkeys(["k1",123,"999"],'aa')
print(v)

结果:{'999': 'aa', 'k1': 'aa', 123: 'aa'}

dict.get(key, default=None):返回指定键的值,如果值不在字典中返回default值(默认为None)

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
print(dic.get('k1',123))
print(dic.get('k3'))
print(dic.get('k3',1111111))

结果:v1 None 1111111

直接用索引取值的方式,没有指定键的值就会报错

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
print(dic['k3'])

结果:KeyError: 'k3'

pop(key,default):删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出,如果值不在字典中返回default值。

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = dic.pop('k1',123)
print(dic,v)
v = dic.pop('k3',900)
print(dic,v)

结果:{'k2': 'v2'} v1
{'k2': 'v2'} 900

popitem():随机返回并删除字典中的一对键和值。

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
k,v = dic.popitem()
print(dic,k,v)

结果:{'k2': 'v2'} k1 v1

dict.setdefault(key, default=None):设置值。如已存在,不设置,获取当前key对应的值;如不存在,设置,获取当前key对应的值 。

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = dic.setdefault('k1',200)
print(dic,v)
v = dic.setdefault('k3',200)
print(dic,v)

结果:{'k2': 'v2', 'k1': 'v1'} v1
   {'k3': 200, 'k2': 'v2', 'k1': 'v1'} 200

dict.update(dict2):把字典dict2的键/值对更新到dict里。存在的就替换,不存在的就添加。

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
dic.update({'k1': '111111','k3': 123})
print(dic)
dic.update(k3=345,k5="asdf")
print(dic)

结果:{'k2': 'v2', 'k1': '111111', 'k3': 123}
   {'k5': 'asdf', 'k2': 'v2', 'k1': '111111', 'k3': 345}

dict.keys()   dict.values()   dict.items():以列表返回一个字典所有的键/值/键值对,主要用于遍历与循环

dic = {
    "k1": 'v1',
    "k2": 'v2'
}
for k,v in dic.items():
    print(k,v)

结果:k2 v2
   k1 v1
dic = {
    "k1": 'v1',
    "k2": 'v2'
}
v = 'k1' in dic
print(v)
v = 'v1' in dic.values()
print(v)

结果:True
   True

数据类型总结

可变不可变:

python中的不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象;可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

a = [1]
b = [1]
print(id(a),id(b))

a,b = 1,1
print(id(a),id(b))

结果:11793288 11794696
   491507440 491507440

根据可变数据类型与不可变数据类型的概念,只需要在改变value值的同时,使用id()函数查看变量id值是否变化就可以知道这种数据类型是可变的还是不可变的了。

可变数据类型:列表,字典

可变数据类型:字符串,数字,元组

访问顺序:

直接访问:数字

顺序访问:字符串,列表,元组(有序的,下标和切片的方式)

映射访问:字典(无序的,比顺序访问效率高,但是更耗内存)

存放元素个数:

容器类型:列表,元组,字典(多个元素)

原子类型:数字,字符串(单个元素)

原文地址:https://www.cnblogs.com/xulan0922/p/9100109.html