Python基础知识(八)—字典

字典 dict

定义

由一系列键值对组成的可变散列容器。

散列:每条记录无序。

键必须惟一且不可变(字符串/数字/元组),值没有限制。

字典内存图:

基础操作

创建字典:

字典名 = {键1:值1,键2:值2}(键不能相同,值可以相同)

字典名 = dict (可迭代对象)

添加/修改元素:

语法字典名[键] = 数据

dict01["qtx"] = 100

说明:

键不存在,创建记录。

键存在,修改映射关系。

添加另一个字典

dict={"a":22,"d":3,"c":33}
dict01={"v":23,"y":3,"b":33}
dict01.update(dict)#{'v': 23, 'y': 3, 'b': 33, 'a': 22, 'd': 3, 'c': 33}
print(dict01)

获取元素:变量 = 字典名[键]  # 没有键则错误

遍历字典:

for 键名 in 字典名:

字典名[键名]

for 键名,值名 in 字典名.items():

遍历
#得到的是键
dict01={'a': 'b', 'c': 'd', 'qtx': 100, 'zc': 90}
for key in dict01:
    print(key,)           #遍历键  a  c  qtx    zc 
    print(dict01[key])    #遍历值  b  d  100   90 

# 得到的是键值对的元组
for item in dict01.items():
    print(item[0])     #遍历键  a  c  qtx    zc
    print(item[1])     #遍历值  b  d  100  90

for key,value in dict01.items():
  print(key)       #遍历键  a  c  qtx    zc
  print(value)     #遍历值  b  d  100  90


# 获取所有值
for value in dict01.values():
  print(value)     #遍历值  b  d  100  90
dict={"a":22,"d":3,"c":33}
#返回指定键的值,如果值不在字典中返回default值
print(dict.get("aa"))#None
print(dict.get(1))#None
#和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
print(dict.setdefault("a"))#22
print(dict.setdefault("aa"))#None
#以列表返回可遍历的(键, 值) 元组数组
print(dict.items())#dict_items([('a', 22), ('d', 3), ('c', 33)])
#返回一个迭代器,可以使用 list() 来转换为列表
print(dict.keys())#dict_keys(['a', 'd', 'c'])
#返回一个迭代器,可以使用 list() 来转换为列表
print(dict.values())#dict_values([22, 3, 33])

语句:删除元素:

del 字典名[键]

先判断元素是否在字典里
if "xx" in dict01:
  del dict01["xx"]
print(dict01)

随机返回并删除字典中的一对键和值(一般删除末尾对)。

print(dict.popitem())  #('aa', None)

清除字典

print(dict01.clear())  #清除None

字典推导式

定义:使用简易方法,将可迭代对象转换为字典。

语法:

{键:值 for 变量 in 可迭代对象}

{键:值 for 变量 in 可迭代对象 if 条件}

# 1 2 3 4 ... 10  -->  数:平方
#传统式
dict01 = {}
for item in range(1, 10):
    dict01[item] = item ** 2
print(dict01)
#推导式
dict02 = {item: item ** 2 for item in range(1, 10)}
print(dict02)
#{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

字典 VS 列表

都是可变容器。

获取元素方式不同,列表用索引,字典用键。

字典的插入,删除,修改的速度快于列表。

列表的存储是有序的,字典的存储是无序的。

原文地址:https://www.cnblogs.com/maplethefox/p/10817112.html