第10章 字典与集合

第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'])  # 输出指定的键所对应的值

结果:
    马
上一篇:T00系列,TOP09A,可读性强


下一篇:洛谷 P3017 [USACO11MAR]Brownie Slicing G(二分,前缀和)