字典的定义

 1 # Python语言中唯一的类型映射
 2 # 键与值之间用“:”分开
 3 # 项与项之间用“,”分开
 4 person = {"name":"yuan","age":18}
 5 print(person)           # {'name': 'yuan', 'age': 18}
 6 
 7 person = dict(name='yuan',age=18)
 8 print(person)           # {'name': 'yuan', 'age': 18}
 9 
10 person = dict({"name":"yuan","age":18})
11 print(person)           # {'name': 'yuan', 'age': 18}

字典的特性

1 # key-value结构
2 # key必须可hash、且必须为不可变数据类型、必须唯一
3 # 可存放任意多个值、可修改、可以不唯一
4 # 无序

字典的内置函数

长度、循环

 1 # 字典
 2 dic = {
 3     "k1":"v1",
 4     "k2":"v2"
 5 }
 6 # 长度
 7 print(len(dic))     # 2
 8 
 9 # 返回一个包含字典所有key的列表
10 k = dic.keys()
11 print(k)            # dict_keys(['k1', 'k2'])
12 # 返回一个包含字典所有value的列表
13 v = dic.values()
14 print(v)            # dict_values(['v1', 'v2'])
15 # 返回一个包含字典所有(键,值)元祖的列表
16 i = dic.items()
17 print(i)            # dict_items([('k1', 'v1'), ('k2', 'v2')])
18 # 循环
19 for k in dic.keys():
20     print(k)
21 for k,v in dic.items():
22     print(k)
23     print(v)
24 for k in dic:
25     print(k)

清空、复制、创建

 1 # 清空
 2 dic.clear()
 3 print(dic)      # {}
 4 dic = {
 5     "k1":"v1",
 6     "k2":"v2"
 7 }
 8 # 复制
 9 dic2 = dic.copy()
10 print(dic2)     # {'k1': 'v1', 'k2': 'v2'}
11 # 根据序列,【创建字典】,并指定统一的值
12 dic2 = {}.fromkeys(["k1",56,"999"],123)
13 print(dic2)        # {'k1': 123, 56: 123, '999': 123}

查看

 1 # 字典
 2 dic = {
 3     "k1":"v1",
 4     "k2":"v2"
 5 }
 6 # 根据key,获取字典中对应的值
 7 # 若key不存在字典中,则报错
 8 v = dic['k1']
 9 print(v)        # v1
10 # 根据key,获取字典中对应的值
11 # 若key不存在字典中,则返回default的值
12 # dict.get(key,default = None)
13 v = dic.get("k1")
14 print(v)        # v1

删除

 1 # 字典
 2 dic = {
 3     "k1":"v1",
 4     "k2":"v2",
 5     "k4":"v4"
 6 }
 7 # 指定某一个key删除,并打印删除的元素
 8 v = dic.pop("k1")
 9 print(dic)      # {'k2': 'v2', 'k4': 'v4'}
10 print(v)        # v1
11 # 随机删除
12 k,v = dic.popitem()
13 print(dic)      # {'k2': 'v2'}
14 print(k,v)      # k4 v4

新增、修改

 1 # 字典新增、修改
 2 dic = {
 3     "k1":"v1",
 4     "k2":"v2"
 5 }
 6 # 若key在字典中不存在,则新增
 7 # 若key在字典中存在,则更新
 8 dic['kn'] = 'vn'
 9 print(dic)      # {'k1': 'v1', 'k2': 'v2', 'kn': 'vn'}
10 # 设置值,若key在字典中不存在,新增
11 #         若key在字典中存在,返回原来的值,
12 v = dic.setdefault("k3","123")
13 print(v)        # 123
14 print(dic)      # {'k1': 'v1', 'k2': 'v2', 'kn': 'vn', 'k3': '123'}
15 
16 # dic.dic2将字典dic2的键值对添加到字典dic中
17 dic.update({"k2":"3546"})
18 print(dic)      # {'k1': 'v1', 'k2': '3546', 'kn': 'vn', 'k3': '123'}
19 dic.update(k2="789",k5 = 345)
20 print(dic)      # {'k1': 'v1', 'k2': '789', 'kn': 'vn', 'k3': '123', 'k5': 345}

 例题:三级菜单

需求:
  可依次选择进入各子菜单
  可从任意一层往回退到上一层
  可从任意一层退出程序
  所需新知识点:列表、字典
 1 # 字典
 2 menu = {
 3     '北京':{
 4         '海淀':{
 5             '五道口':{
 6                 'soho':{},
 7                 '网易':{},
 8                 'google':{}
 9             },
10             '中关村':{
11                 '爱奇艺':{},
12                 '汽车之家':{},
13                 'youku':{}
14             },
15             '上地':{
16                 '百度':{}
17             }
18         },
19         '昌平':{
20             '沙河':{
21                 '老男孩':{},
22                 '北航':{}
23             },
24             '天通苑':{},
25             '回龙观':{}
26         },
27         '朝阳':{},
28         '东城':{}
29     },
30     '上海':{
31         '闵行':{
32             '人民广场':{
33                 '炸鸡店':{}
34             }
35         },
36         '闸北':{
37             '火车战':{
38                 '携程':{}
39             }
40         },
41         '浦东':{}
42     },
43     '山东':{}
44 }
45 
46 # 列表
47 list = []
48 # 输入字母“q”为返回上一层,
49 # 输入字母“b”为退出
50 while len(list) < 4:
51     # 输出
52     lLength = len(list)
53     if lLength ==0:
54         iItem = menu
55     elif lLength == 1:
56         iItem = menu[list[0]]
57     elif lLength == 2:
58         iItem = menu[list[0]][list[1]]
59     elif lLength == 3:
60         iItem = menu[list[0]][list[1]][list[2]]
61     list_k = []     # 列表,用于存储,显示关键字
62     for k in iItem:
63         list_k.append(k)
64     # 判断子地区列表是否为空---开始
65     if len(list_k) == 0:
66         print("当前地区下,已无子地区可选")
67         break
68     else:
69         print(list_k)
70         dq = input("请输入要选择的地区:")
71         # 对输入内容进行判断---开始
72         if dq == 'q':
73             list.pop()
74         elif dq == 'b':
75             print("您已退出!")
76             break
77         elif dq in list_k:
78             list.append(dq)
79         else:
80             print("输入地区有误!")
81             break
82         # 对输入内容进行判断---结束
83     # 判断子地区列表是否为空---结束
84 else:
85     print("当前已无地区可选!")
86 print("---The end---")

 

posted on 2018-03-14 18:00  &&||!  阅读(133)  评论(0编辑  收藏  举报