字典的常见操作1
<1>查看元素
除了使用key查找数据,还可以使用get来获取数据
demo:
info = {'name':'吴彦祖','age':18} print(info['age']) # 获取年龄 # print(info['sex']) # 获取不存在的key,会发生异常 print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常
<2>修改元素
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
demo:
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'} newId = input('请输入新的学号') info['id'] = int(newId) print('修改之后的id为%d:'%info['id'])
<3>添加元素
demo:访问不存在的元素
info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'} print('id为:%d'%info['id'])
如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
demo:添加新的元素
info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'} # print('id为:%d'%info['id'])#程序会终端运行,因为访问了不存在的键 newId = input('请输入新的学号') info['id'] = newId print('添加之后的id为:%d'%info['id'])
结果:
请输入新的学号188
添加之后的id为: 188
<4>删除元素
对字典进行删除操作,有一下几种:
- del
- clear()
demo:del删除指定的元素
info = {'name':'班长', 'sex':'f', 'address':'地球亚洲中国北京'} print('删除前,%s'%info['name']) del info['name'] print('删除后,%s'%info['name'])
结果
demo:del删除整个字典
info = {'name':'monitor', 'sex':'f', 'address':'China'} print('删除前,%s'%info) del info print('删除后,%s'%info)
结果
demo:clear清空整个字典
info = {'name':'monitor', 'sex':'f', 'address':'China'} print('清空前,%s'%info) info.clear() print('清空后,%s'%info)
结果
例子1(查看元素):
# 字典是可变的数据类型 # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <1>查看元素(通过key 获取value) # 变量名 = 字典名[key] my_name = my_dict["name"] print(my_name)
运行结果:
小明
例子2(修改元素):
# 字典是可变的数据类型 # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <2>修改元素 (如果key存在) # 字典名[key] = 数值 my_dict["age"] = 23 print(my_dict)
运行结果:
{'age': 23, 'name': '小明'}
例子3(添加元素):
# 字典是可变的数据类型 # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <3>添加元素 (如果key不存在) # # 字典名[key] = 数值 my_dict["no"] = "007" print(my_dict)
运行结果:
{'no': '007', 'name': '小明', 'age': 20}
例子4(删除元素):
# 字典是可变的数据类型 # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <4>删除元素 # del (通过key删除字典的键值对) del my_dict["age"] print(my_dict)
运行结果:
{'name': '小明'}
例子5(清空):
# 字典是可变的数据类型 # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <4>清空元素 # clear # my_dict = {} my_dict.clear() print(my_dict)
运行结果:
{}
字典的常见操作2
<1>len()
测量字典中,键值对的个数
<2>keys
返回一个包含字典所有KEY的列表
<3>values
返回一个包含字典所有value的列表
<4>items
返回一个包含所有(键,值)元祖的列表
<5>has_key (Python3 已取消)
dict.has_key(key)如果key在字典中,返回True,否则返回False
例子1:
# # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <1>len() -> str list tuple dict range l = len(my_dict) print(l)
例子2:
# # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <2>keys # 返回一个包含字典所有KEY的列表 # python3.x中返回的是一个对象 # python2.x中返回的就是一个列表 keys_list = my_dict.keys() print(list(keys_list))
运行结果:
['age', 'name']
例子3:
# # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <3>values # 返回一个包含字典所有value的列表 values_list = my_dict.values() print(list(values_list))
运行结果:
['小明', 20]
例子4:
# # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <4>items # 返回一个包含所有(键,值)元祖的列表 items_list = my_dict.items() print(list(items_list))
运行结果:
[('age', 20), ('name', '小明')]
例子5:
# # 定义一个字典 my_dict = {"name": "小明", "age": 20} # <5>has_key (Python3 已取消) # dict.has_key(key)如果key在字典中,返回True,否则返回False # name = "hello" # if "e" in name: # print("存在")
例子6:
# # 定义一个字典 my_dict = {"name": "小明", "age": 20} # # 通过key 获取value my_name = my_dict["name1"] print(my_name) # if "name" in my_dict: # print("存在") # 通过in 或者not in 判断key是否存在
例子7:
# <6> setdefaut # # 定义一个字典 my_dict = {"name": "小明", "age": 20} # 如果key存在 会返回对应的value # 如果key不存在 那么会使用其默认值 而且会把这个不存在的key和默认值组成一个新的键值对添加到字典中 my_name = my_dict.setdefault("name1", "哈哈") print(my_name) print(my_dict)
运行结果:
哈哈 {'age': 20, 'name': '小明', 'name1': '哈哈'}
例子8:
# <7> get # 定义一个字典 my_dict = {"name": "小明", "age": 20} # 如果key存在 会返回对应的value # 如果key不存在 那么会使用其默认值 字典不会发生任何改变 my_name = my_dict.get("name1", "哈哈") print(my_name) print(my_dict)
运行结果:
哈哈 {'age': 20, 'name': '小明'}
# <8> 字典通过key获取value 的方式有几种? # dict[key] # dict.setdefaut(key) # dict.get(key)
遍历
通过for ... in ... 我们可以遍历字符串、列表、元组、字典等
注意python语法的缩进
字符串遍历
>>> a_str = "hello itcast" >>> for char in a_str: ... print(char,end=' ') ... h e l l o i t c a s t
列表遍历
>>> a_list = [1, 2, 3, 4, 5] >>> for num in a_list: ... print(num,end=' ') ... 1 2 3 4 5
元组遍历
>>> a_turple = (1, 2, 3, 4, 5) >>> for num in a_turple: ... print(num,end=" ") 1 2 3 4 5
字典遍历
<1> 遍历字典的key(键)
<2> 遍历字典的value(值)
<3> 遍历字典的项(元素)
<4> 遍历字典的key-value(键值对)
想一想,如何实现带下标索引的遍历
>>> chars = ['a', 'b', 'c', 'd'] >>> i = 0 >>> for chr in chars: ... print("%d %s"%(i, chr)) ... i += 1 ... 0 a 1 b 2 c 3 d
enumerate()
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
>>> chars = ['a', 'b', 'c', 'd'] >>> for i, chr in enumerate(chars): ... print i, chr ... 0 a 1 b 2 c 3 d
例子1:
# 可以进行循环遍历的类型() # str for c in "hello": print(c)
例子2:
# list for value in [1, 3, 5]: print(value)
例子3:
# tuple for value in (2, 4, 6): print(value)
例子4:
# range for i in range(5): print(i)
例子5:
# dict # 定义一个字典 my_dict = {"name": "小明", "age": 20} # key # my_dict == my_dict.keys() for k in my_dict.keys(): print(k)
运行结果:
age
name
例子6:
# dict # 定义一个字典 my_dict = {"name": "小明", "age": 20} # value for v in my_dict.values(): print(v)
运行结果:
20
小明
例子7:
# dict # 定义一个字典 my_dict = {"name": "小明", "age": 20} # items for item in my_dict.items(): print(item)
运行结果:
('age', 20) ('name', '小明')
例子8:
# dict # 定义一个字典 my_dict = {"name": "小明", "age": 20} # items for item in my_dict.items(): print("key=%s, value=%s" % (item[0], item[1]))
运行结果:
key=age, value=20
key=name, value=小明
例子9:
# dict # 定义一个字典 my_dict = {"name": "小明", "age": 20} # items # 如果想直接使用key 和 value 可以这么写 # item == k, v # 记住 第一个肯定是key 第二个肯定是value for k, v in my_dict.items(): print("key=%s, value=%s" % (k, v))
运行结果:
key=name, value=小明
key=age, value=20
例子10:
my_list = list("ABCD") print(my_list)
运行结果:
['A', 'B', 'C', 'D']
例子11:
# 需求 my_list = list("ABCD") print(my_list) # 请帮我打印每个数值 而且打印每个数值在列表的位置(下标索引) i = 0 while i < len(my_list): value = my_list[i] print("第%d个位置的元素是%s" % (i, value)) i += 1
或者:
# 需求 my_list = list("ABCD") print(my_list) # 请帮我打印每个数值 而且打印每个数值在列表的位置(下标索引) i = 0 for value in my_list: print("第%d个位置的元素是%s" % (i, value)) i += 1
运行结果:
['A', 'B', 'C', 'D'] 第0个位置的元素是A 第1个位置的元素是B 第2个位置的元素是C 第3个位置的元素是D
例子12:
# 需求 # 请帮我打印每个数值 而且打印每个数值在列表的位置(下标索引) my_list = list("ABCD") print(my_list) print(enumerate(my_list)) for i, value in enumerate(my_list): print("第%d个位置的元素是%s" % (i, value))
运行结果:
['A', 'B', 'C', 'D'] <enumerate object at 0x7f7f81efff30> 第0个位置的元素是A 第1个位置的元素是B 第2个位置的元素是C 第3个位置的元素是D