31.字典的常见操作

字典的常见操作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

 

posted @ 2020-04-26 01:43  kelin1  阅读(268)  评论(0编辑  收藏  举报