06. 字典

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, "输入有误"))

猜你喜欢

转载自www.cnblogs.com/juno3550/p/12316787.html