Python 字典

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}

方法1:如果在使用“变量名[键] = 值”时,这个键在字典中不存在,那么就会新增这个元素。

方法2:update(d1, d2):将字典d2的元素添加到字典d1中

1 >>> a = {1: 2, 2: 3}
2 >>> b = {3: 4}
3 >>> a.update(b)
4 >>> a
5 {1: 2, 2: 3, 3: 4}

方法3:setdefault(key, value):当key不存在时,添加value。

>>> d = {1: "hello"}
>>> d.setdefault(2, "x")  # 只有在key(即2)不存在的情况下才生效
'x'
>>> d
{1: 'hello', 2: 'x'}
>>> d.setdefault(2,"xxxxx")   # 当key存在时,该方法无效
'x'
>>> d
{1: 'hello', 2: 'x'}

方法4:dict.fromkeys(seq, value):将序列seq的每个元素作为键,value参数作为每个value值,并返回字典对象。

1 >>> seq = ("name", "age", "sex")
2 >>> di = dict.fromkeys(seq, 10)
3 >>> di
4 {'name': 10, 'age': 10, 'sex': 10}

方法5:字符映射

1 >>> di = str.maketrans("123", "abc")
2 >>> di
3 {49: 97, 50: 98, 51: 99}
4 >>> s = "12345321"
5 >>> s.translate(di)  # 1对应a,2对应b,3对应c
6 'abc45cba'

  • del:可以删除字典的某个元素,或整个字典。
  • clear():清空整个字典。
  • popitem():随机删除并返回该键值对,当字典为空时执行该方法会返回异常。
  • pop(key):根据key值删除该键值对,并返回value值,当key不存在时返回异常。
 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 {}
14 >>> a
15 {1: 2, 2: 3, 3: 4}
16 
17 >>> a.popitem()  # 随机删除并返回某一键值对
18 (3, 4)
19 >>> a.pop(1)  # 根据key删除该键值对,并返回value
20 2
21 >>> a.pop(1)  # key不存在
22 Traceback (most recent call last):
23   File "<stdin>", line 1, in <module>
24 KeyError: 1

如果在使用“变量名[键] = 值”时,这个键在字典中存在,那么就会更改该键的值。

  • 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 = float(input("请输入被乘数:"))
 3     oper = input("请输入四则运算符:")
 4     num2 = float(input("请输入乘数:"))
 5     if oper == "+":
 6         print(num1 + num2)
 7     elif oper == "-":
 8         print(num1 - num2)    
 9     elif oper == "*":
10         print(num1 * num2)
11     elif oper == "/":
12         print(num1 / num2)
13     else:
14         print("输入的运算符有误,仅能为'+ - * /'之一")

方法二:用字典代替switch功能

 1 while 1:
 2     num1 = float(input("请输入被乘数:"))
 3     oper = input("请输入四则运算符:")
 4     num2 = float(input("请输入乘数:"))
 5     di = {
 6     "+": num1 + num2,
 7     "-": num1 - num2,
 8     "*": num1 * num2,
 9     "/": num1 / num2,         
10     }
11     print(di.get(oper, "输入有误"))

 

posted @ 2020-02-16 14:38  Juno3550  阅读(239)  评论(0编辑  收藏  举报