python——字典

如果数据具有唯一性,可以通过字典方式存储,可实现快速查找操作

引入原因:如果在列表中存储了大量的数据,在列表中获取指定的元素就是一件很耗时的操作,这是因为列表是线性顺序存储,如果找到之前一直索引,可以通过索引快速获取元素,如果之前不知道索引,则只能通过遍历找到符合条件的元素。

1. 创建字典

通过{'key1':'value1', 'key2':'value2', 'key3':'value3',...}键值对创建

  • “键”可以是python中任意不可变数据,例如:整数、实数、复数或是字符串、元组等类型可哈希数,但不能使用列表、集合、字典或其他可变类型作为字典的“键”
  • 通过“键”来计算值的位置,快速获取和他唯一对应的“值”
  • “键”是唯一的,不允许重复,而“值”是可以重复的
dict0 = {}
dict1 = {'server':'python.org', 'database':'mysql'}
dict2 = {'河北':'石家庄', '广西':'南宁', '广东':'广州'}
print(type(dict0))
print(type(dict1))
print(type(dict2))

输出

<class 'dict'>
<class 'dict'>
<class 'dict'>

通过内置函数dict()创建

dict3 = dict()
dict4 = dict([('one',1), ('two',2), ('three',3)])
print(dict4)

输出

以关键参数的形式创建字典

dict5 = dict(name='Dong', age=23)
print(dict5)

输出

2. 访问元素

通过dict[键]来访问字典中的对应键的值
如果键值不存在,则会抛出KeyError异常。为了避免这种情况,可以先使用in关键字判定键是否存在于字典中
注意:字典是无序的,不能通过索引访问元素

dict5 = dict(name='Dong', age=23)
print(dict5['age'])

输出

23

dict5 = dict(name='Dong', age=23)
if 'age' in dict5:
    print(dict5['age'])

3. 增加修改元素

d[key] = value 将key对应的值修改为value,key不存在则增加新的key对

dict3 = {"001":["张三", 98], "002":["李四", 85], "003":["王五", 76]}
dict3["002"] = ["赵六", 80]
dict3["005"] = ["田七", 79]
print(dict3)

输出

4. 删除元素

  • del[] dict[key] 通过键来实现删除元素,如果键值不存在,同样则会抛出KeyError异常
  • popitem()方法返回并删除字典中的最后一对键和值
  • pop(key)方法key存在就移除,并返回他的value值,如果字典已经为空,就抛出keyError异常
dict5 = dict(name='Dong', sex='M', age=23)
del dict5['age']
print(dict5)
dict5.pop('sex')
print(dict5)
dict5.popitem()
print(dict5)

输出

{'name': 'Dong', 'sex': 'M'}
{'name': 'Dong'}
{}

mydict = dict(name='Dong', sex='M', age=23)
if 'name' in mydict:
    mydict.pop('name')
print(mydict)

5. get()和item()方法

  • get()方法用来返回指定“键”对应的“值”,并且允许指定该键不存在时返回特定的“值”
  • items()方法可以返回字典的键、值对,用元组进行封装
dict3 = {"河北":"石家庄", "广西":"南宁", "广东":"广州"}
print(dict3.get("河北"))
print(dict3.get("河南"))
print(dict3.items())

输出

石家庄
None
dict_items([('河北', '石家庄'), ('广西', '南宁'), ('广东', '广州')])

6. keys()和values()方法

  • keys()方法可以返回字典的键
  • values()方法可以返回字典的键
dict3 = {"河北":"石家庄", "广西":"南宁", "广东":"广州"}
print(dict3.keys())
print(dict3.values())

输出

dict_keys(['河北', '广西', '广东'])
dict_values(['石家庄', '南宁', '广州'])

7. fromkeys()方法

  • dict.fromkeys(seq[, value])函数用于创建一个新字典,以给定元素做字典的键,value为字典所有键对应的初始值
# 给定内容为”键“, 创建”值“为空的字典
dict6 = dict.fromkeys(['name', 'age','sex'])
print(dict6)

输出:

8. 长度与检索

  • len(dict) 同列表和元组相同,返回字典中键的数量
  • key in dict 运算符测试某个特定的键是否在字典中
dict6 = dict.fromkeys(['name', 'age','sex'])
'name' in dict6
len(dict6)
for key in dict6.keys():
    print(key, dict6[key])

输出

3
name None
age None
sex None

posted @ 2022-07-13 19:16  hcypeu  阅读(90)  评论(0)    收藏  举报