1.8 字典 1.9 字典练习 练习题

1.8 字典

字典{}

  • 字典是Python中的唯一的映射类型(哈希表)
  • 字典对象是可变的,但是字典的键必须使用不可变对象,一个字典中可以使用不同类型的键值
  • 字典的方法:
    • keys()
    • values()
    • items()
  • 创建字典
    • dic = {}
    • dic = dict()
      • help(dict)
      • dict((['a',1],['b',2]))
      • dict(a=1,b=2)
    • fromkeys(),字典元素有相同的值,默认为None.
      • dict = {}.fromkeys(('x','y'),100)
dict = {'a': 97,'b':98,'c':99}
print (dict)
> {'a': 97, 'b': 98, 'c': 99}
#####################################
dict = {'a': 97,'b':98,'c':99}
print (dict.keys())
> dict_keys(['a', 'b', 'c'])
#####################################
dict = {'a': 97,'b':98,'c':99}
print (dict.values())
> dict_values([97, 98, 99])
#####################################
dict = {'a': 97,'b':98,'c':99}
print (dict.get('a'))
> 97
#####################################
dict = {'a': 97,'b':98,'c':99}
print (dict.items())
> dict_items([('a', 97), ('b', 98), ('c', 99)])
#####################################
dict = {'a': 97,'b':98,'c':99}
dict['a'] = 111
print (dict.get('a'))
> 111
#####################################
dict = {'a': 97,'b':98,'c':99}
print (dict.get('e'))
> None
#####################################
dict = {'a': 97,'b':98,'c':99}
print (dict.get('e','long'))
> long
#####################################
dict = {'a': 97,'b':98,'c':99}
print ('a' in dict)
> True
print ('e' in dict)
> False
print ('e' not in dict)
> True
#####################################
dict = {'a': 97,'b':98,'c':99}
print (dict.clear())
> None
#####################################
dict = {'a': 97,'b':98,'c':99}
dict.pop('a')
print (dict)
> {'b': 98, 'c': 99}
#####################################
dict = {'a': 97,'b':98,'c':99}
dict1 = {'d':100,'e':101}
dict.update(dict1)
print (dict)
> {'a': 97, 'b': 98, 'c': 99, 'd': 100, 'e': 101}
#####################################
dict = {'a': 97,'b':98,'c':99}
dictt = {'d':100,'e':101}
cc = dictt.fromkeys('abcccd')
print (cc)
> {'a': None, 'b': None, 'c': None, 'd': None}
dd = dictt.fromkeys('abcddd',100)
print (dd)
> {'a': 100, 'b': 100, 'c': 100, 'd': 100}
ee = dictt.fromkeys(range(5),'dd')
print (ee)
> {0: 'dd', 1: 'dd', 2: 'dd', 3: 'dd', 4: 'dd'}

1.9 字典练习

info = {}
name = input("请输入名字:")
age = input("请输入年龄:")
info ['姓名'] = name
info ['年龄'] = age
print (info)

练习:

  • 1 . 现有一个字典dict1 保存的是小写字母a-z对应的ASCII码
字典dict1
dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}
  • 1) 将该字典按照ASCII码的值排序
  • 2) 有一个字母的ASCII错了,修改为正确的值,并重新排序
dict1= sorted(dict1.items(), key=lambda a:a[0])
print ("将该字典按照ASCII码的值排序")
print(dict1)
#############################################################
dict1['o'] = 111
dict1= sorted(dict1.items(), key=lambda a:a[0])
print ("有一个字母的ASCII错了,修改为正确的值,并重新排序")
print(dict1)
  • 2 . 用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法)
import string
dict2 = dict(zip(string.ascii_uppercase,range(65,92)))
print (dict2)
  • 3 . 将dict2与第一题排序后的dict1合并成一个dict3
dict3 = dict(dict1, **dict2)
print (dict3)