第10章 字典与集合
10.1 字典{'key1':'value1','key2':'value2'},key本质是元组
字典的创建和删除
- 字典的创建,zip元组和dict函数的转换
代码:
word ={'che':'车','ma':'马'} #定义一个字典
print(word)
key1=['che','ma','niu','niu2'] #定义一个列表为键列表,注意,这里key多了一个,而value少了一个,看最后zip对象转换成字典后是几个对应关系
value1=['车','马','牛'] #定义一个列表为值列表
zip_result1=zip(key1,value1) #zip函数可以将连个列表组合成一个zip对象
print(zip_result1) #输出的zip对象内容我们无法阅读
dict1=dict(zip_result1)
print(dict1) #输出该字典
结果:
{'che': '车', 'ma': '马'}
<zip object at 0x7fba26eff240>
{'che': '车', 'ma': '马', 'niu': '牛'} #可以看出,即使key多了,那也只能是一一对应,最后的字典也只现实对应好的完整的字典
- 空字典的创建
代码:
dict={}
print(dict)
结果:
{}
代码:
dictionary=dict(启蒙='订',一一='启动')
print(dictionary)
结果:
{'启蒙': '订', '一一': '启动'}
- fromkeys()方法创建值为空的字典
代码:
key1=['che','ma','niu','niu2'] #先创建一个key列表
dictionary=dict.fromkeys(key1) #调用dict.fromkeys()创建一个空值字典
print(dictionary)
结果:
{'che': None, 'ma': None, 'niu': None, 'niu2': None}
- 删除字典:使用del 删除字典,清空而不删除字典则使用该对象的clear方法
* 如果要删除一个字典,则使用del语句
代码:
key1=['che','ma','niu','niu2'] #先创建一个key列表
dictionary=dict.fromkeys(key1) #调用dict.fromkeys()创建一个空值字典
print('删除字典前:',dictionary)
del dictionary
print('删除字典后:',dictionary)
结果:
NameError: name 'dictionary' is not defined
原因:
因为该字典已经被删除,所以print的时候爆出该字典不存在
* 如果要清空一个字典,则使用clear方法
代码:
key1=['che','ma','niu','niu2'] #先创建一个key列表
dictionary=dict.fromkeys(key1) #调用dict.fromkeys()创建一个空值字典
print('清空字典前:',dictionary)
dictionary.clear()
print('清空字典后:',dictionary)
结果:
清空字典前: {'che': None, 'ma': None, 'niu': None, 'niu2': None}
清空字典后: {}
- 实例练习:搞一个简单的密码本,进行字符串的加密
source=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',' ','0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
encode=['k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','a','b','c','d','e','f','g','h','i','j',' ',')','!','@','#','$','%','^','&','*','(','S','T','U','V','W','X','Y','Z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R']
zip_obj=zip(source,encode)
dictionary=dict(zip_obj)
encode_str=''
de_code=''
input_str=input("请输入你想要的加密明文:")
for char in input_str:
encode_str=encode_str+str(dictionary[char])
print("密文输出:",encode_str)
10.2 通过键值对访问字典
- 通过key来读取字典的值 dict[key]
代码:
key1 = ['che', 'ma', 'niu', 'niu2'] # 定义一个列表为键列表,注意,这里key多了一个,而value少了一个,看最后zip对象转换成字典后是几个对应关系
value1 = ['车', '马', '牛'] # 定义一个列表为值列表
zip_result1 = zip(key1, value1) # zip函数可以将连个列表组合成一个zip对象
dictionary=dict(zip_result1) #zip对象转换为dict
print(dictionary['ma']) # 输出指定的键所对应的值
结果:
马