1. 字典的介绍
2. 字典的常用操作
3. 遍历字典元素
1. 字典的常用操作
字典的作用:既能存储多个数据,又能很方便地定位到需要访问的元素。
1 >>> di = {"one": 1, 2: "two"} 2 >>> di["one"] 3 1 4 >>> di[2] 5 'two' 6 >>>
- 字典的每个元素由两部分组成:键和值。
- 在列表中查找元素是根据索引;在字典中查找元素是根据键。
- 若查找了不存在的键,会返回异常。若想避免异常,可使用get()方法。
- 只有不可变类型的数据才能作为键。
2. 字典的常用操作
创建
1 >>> # 方式一 2 >>> di = {"one": 1, 2: "two"} 3 4 >>> # 方式二:使用dict()函数 5 >>> dict() # 创建空字典 6 {} 7 >>> dict({1:2, "a":3}) # 传入字典 8 {1: 2, 'a': 3} 9 >>> dict([(1,2), [3,4]]) # 传入多维列表/元组 10 {1: 2, 3: 4} 11 >>> dict(one=1, two=2) # 传入关键字 12 {'one': 1, 'two': 2} 13 >>> dict(zip(["one","two"], [1, 2])) # 使用zip函数 14 {'one': 1, 'two': 2}
增
如果在使用“变量名[键] = 值”时,这个键在字典中不存在,那么就会新增这个元素。
删
- del:可以删除字典的某个元素,或整个字典。
- clear():清空整个字典
1 {'one': 1, 2: 'two'} 2 >>> del di[2] # 删除某个元素 3 >>> di 4 {'one': 1} 5 >>> del di # 删除整个字典 6 >>> di 7 Traceback (most recent call last): 8 File "<stdin>", line 1, in <module> 9 NameError: name 'di' is not defined 10 >>> di = {"one": 1, 2: "two"} 11 >>> di.clear() # 清空整个字典的元素 12 >>> di 13 {}
改
如果在使用“变量名[键] = 值”时,这个键在字典中存在,那么就会更改该键的值。
查
-
get():当不确定字典是否存在某个键而又想获取其值时,为了避免报错,可以使用get()方法。若指定元素不存在则默认返回None,还可以设置返回的默认值。
-
keys():返回一个包含该字典所有的key的列表。
-
values():返回一个包含该字典所有的value的列表。
-
items():返回一个包含该字典所有的(key, value)元组的列表。
-
has_key(key):如果参数key存在字典的键中,则返回True,反之返回False。(该方法在python3中已被移除,可用in代替)
1 >>> di = dict(one=1, two=2) 2 >>> di.get("three") # 若不存在则返回None 3 >>> 4 >>> di.get("three", 3) # 设置返回的默认值为3 5 3 6 >>> di.keys() 7 dict_keys(['one', 'two']) 8 >>> di.values() 9 dict_values([1, 2]) 10 >>> di.items() 11 dict_items([('one', 1), ('two', 2)])
3. 遍历字典元素
使用for循环
1 >>> di = dict(one=1, two=2) 2 >>> for key in di.keys(): 3 ... print(key) 4 ... 5 one 6 two 7 >>> for value in di.values(): 8 ... print(value) 9 ... 10 1 11 2 12 >>> for key, value in di.items(): 13 ... print(key, value) 14 ... 15 one 1 16 two 2
练习题
实现获取键盘输入的简单计算器
方法一:if 条件语句实现
1 while 1: 2 num1 = input("请输入被乘数:") 3 oper = input("请输入四则运算符:") 4 num2 = input("请输入乘数:") 5 if type(int(num1))==int and type(int(num2))==int: 6 num1 = int(num1) 7 num2 = int(num2) 8 if oper == "+": 9 print(num1 + num2) 10 elif oper == "-": 11 print(num1 - num2) 12 elif oper == "*": 13 print(num1 * num2) 14 elif oper == "/": 15 print(num1 / num2) 16 else: 17 print("输入的运算符有误,仅能为'+ - * /'之一")
方法二:用字典代替switch功能
1 while 1: 2 num1 = input("请输入被乘数:") 3 oper = input("请输入四则运算符:") 4 num2 = input("请输入乘数:") 5 if type(int(num1))==int and type(int(num2))==int and oper in "+-*/": 6 num1 = int(num1) 7 num2 = int(num2) 8 di = { 9 "+": num1 + num2, 10 "-": num1 - num2, 11 "*": num1 * num2, 12 "/": num1 / num2, 13 } 14 print(di.get(oper, "输入有误"))