python-字典

字典

一、 字典

1.、 列表可以存储大量的数据类型,但是如果数据量大的话,他的查询速度比较慢。

2.、 列表只能按照顺序存储,数据与数据之间关联性不强。

所以针对于上的缺点,需要引入另一种容器型的数据类型,解决上面的问题,这就需要dict字典。

 

不可变(可哈希)的数据类型:int,str,bool,tuple。

  可变(不可哈希)的数据类型:list,dict,set。

字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的:

    Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的。

    Value:任意数据(int,str,bool,tuple,list,dict,set),包括后面要学的实例对象等。

 在Python3.5版本(包括此版本)之前,字典是无序的。

 在Python3.6版本之后,字典会按照初建字典时的顺序排列(即第一次插入数据的顺序排序)。

 当然,字典也有缺点:他的缺点就是内存消耗巨大。

二、 创建:

# 方式1:
dic = dict((('one', 1),('two', 2),('three', 3)))

# dic = dict([('one', 1),('two', 2),('three', 3)])

print(dic)  # {'one': 1, 'two': 2, 'three': 3}

 

# 方式2:
dic = dict(one=1,two=2,three=3)

print(dic)  # {'one': 1, 'two': 2, 'three': 3}

 

# 方式3:
dic = dict({'one': 1, 'two': 2, 'three': 3})

print(dic)  # {'one': 1, 'two': 2, 'three': 3}

 


# 方式5: 后面会讲到先了解
dic = dict(zip(['one', 'two', 'three'],[1, 2, 3]))

print(dic)

 

# 方式6: 字典推导式 后面会讲到
dic = { k: v for k,v in [('one', 1),('two', 2),('three', 3)]}

print(dic)

 

# 方式7:利用fromkey。
dic = dict.fromkeys('abcd','太白')

print(dic)  # {'a': '太白', 'b': '太白', 'c': '太白', 'd': '太白'}

三、 增

     1、 通过键值对直接增加

dic = {'name': '太白', 'age': 18}

dic['weight'] = 75 # 没有weight这个键,就增加键值对

print(dic) # {'name': '太白', 'age': 18, 'weight': 75}

dic['name'] = 'barry' # 有name这个键,就成了字典的改值

print(dic) # {'name': 'barry', 'age': 18, 'weight': 75}

2、 setdefault

dic = {'name': '太白', 'age': 18}

dic.setdefault('height',175) # 没有height此键,则添加

print(dic) # {'name': '太白', 'age': 18, 'height': 175}

dic.setdefault('name','barry') # 有此键则不变

print(dic) # {'name': '太白', 'age': 18, 'height': 175}

#它有返回值

dic = {'name': '太白', 'age': 18}

ret = dic.setdefault('name')

print(ret)  # 太白

四、 删

1、 pop 通过key删除字典的键值对,有返回值,可设置返回值。

dic = {'name': '太白', 'age': 18}

# ret = dic.pop('name')

# print(ret,dic) # 太白 {'age': 18}

ret1 = dic.pop('n',None)

print(ret1,dic) # None {'name': '太白', 'age': 18}

2、 popitem 3.5版本之前,popitem为随机删除,3.6之后为删除最后一个,有返回值

dic = {'name': '太白', 'age': 18}

ret = dic.popitem()

print(ret,dic) # ('age', 18) {'name': '太白'}

3、 clear 清空字典

dic = {'name': '太白', 'age': 18}

dic.clear()

print(dic) # {}

4、 del 通过键删除键值对

dic = {'name': '太白', 'age': 18}

del dic['name']

print(dic) # {'age': 18}

5、 删除整个字典

del dic

五、 改

1、 通过键值对直接改

dic = {'name': '太白', 'age': 18}

dic['name'] = 'barry'

print(dic) # {'name': 'barry', 'age': 18}

2、 update

dic = {'name': '太白', 'age': 18}

dic.update(sex='', height=175)

print(dic) 

# {'name': '太白', 'age': 18, 'sex': '男', 'height': 175}



dic = {'name': '太白', 'age': 18}

dic.update([(1, 'a'),(2, 'b'),(3, 'c'),(4, 'd')])

print(dic) 

# {'name': '太白', 'age': 18, 1: 'a', 2: 'b', 3: 'c', 4: 'd'}



dic1 = {"name":"jin","age":18,"sex":"male"}

dic2 = {"name":"alex","weight":75}

dic1.update(dic2)

print(dic1) 

# {'name': 'alex', 'age': 18, 'sex': 'male', 'weight': 75}

print(dic2) # {'name': 'alex', 'weight': 75}

六、 查

1、 通过键查询 直接dic[key](没有此键会报错)

dic = {'name': '太白', 'age': 18}

print(dic['name']) # 太白

2、 get

dic = {'name': '太白', 'age': 18}

v = dic.get('name')

print(v) # '太白'

v = dic.get('name1')

print(v) # None

v = dic.get('name2','没有此键')

print(v) # 没有此键

3、 keys()

dic = {'name': '太白', 'age': 18}

print(dic.keys()) 

# dict_keys(['name', 'age'])

4、 values()

dic = {'name': '太白', 'age': 18}

print(dic.values()) 

# dict_values(['太白', 18])

5、 items()

dic = {'name': '太白', 'age': 18}

print(dic.items()) 

# dict_items([('name', '太白'), ('age', 18)])
posted @ 2020-05-02 10:09  wizard骑士  阅读(115)  评论(0编辑  收藏  举报