python---字典

1. 什么字典?

字典在python中是一个无序的数据集合,字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,都存储在一个特定的键(key)下,键可以是数字、字符串甚至元组。字典也是python中唯一内建的映射类型。

2. 创建和使用字典

字典的创建: 

元素由键(key)和值(value)组成;

可以用dic()函数或者方括号{}创建,元素之间用‘,’分割,键与值用‘:’隔开;

键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变得

可以使用键(key)来访问元素

1. 

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
print(heros['及时雨']) # 运行结果:宋江

hero_star = {'天罡星': {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'},
             '地煞星': {'母夜叉': '孙二娘'}}
print(hero_star['天罡星'])  #运行结果:{'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
print(hero_star['天罡星']['及时雨'])  #运行结果:宋江

 

 

2. 使用dict函数通过关键字的参数来创建字典

heros = dict(及时雨 = '宋江', 玉麒麟 = '卢俊义', 花和尚 = '鲁智深')

字典的基本操作

1. 增

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
heros['母夜叉'] = '孙二娘'
print(heros)

# 运行结果:{'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深', '母夜叉': '孙二娘'}

2. 改

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
heros['及时雨'] = '宋公明'
print(heros['及时雨'])

# 运行结果:宋公明

 

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
dict_val = {'母夜叉': '孙二娘', '豹子头': '林冲'}
heros.update(dict_val)
print(heros)

# 运行结果:(将dict_val 添加在字典heros后边)
{'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深', '母夜叉': '孙二娘', '豹子头': '林冲'}

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
dict_val = {'母夜叉': '孙二娘', '豹子头': '林冲', '花和尚': '鲁智深'}
heros.update(dict_val)
print(heros)

# 运行结果:(将dict_val与heros重复的'花和尚': '鲁智深' 去掉, 再添加到heros后边) {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深', '母夜叉': '孙二娘', '豹子头': '林冲'}

3. 删


1. del: 通过键值删除一个元素,也可以删除整个字典

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
del heros['及时雨']
print(heros)
# 运行结果:{'玉麒麟': '卢俊义', '花和尚': '鲁智深'}
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
del heros
print(heros)

# 运行结果:NameError: name 'heros' is not defined

2. pop: 通过键名删除元素

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
heros.pop('花和尚')
print(heros)

# 运行结果: {'及时雨': '宋江', '玉麒麟': '卢俊义'}

3. popitem:删除最后一个元素

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
heros.popitem()
print(heros)

# 运行结果:{'及时雨': '宋江', '玉麒麟': '卢俊义'}

4. clear:清空列表

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
heros.clear()
print(heros)

#运行结果:{}

4. 查 in(通过键值查询)

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
if '及时雨' in heros:
    print('该元素在字典中')
else:
    print('该元素在字典中')


#运行结果:该元素在字典中

5. 取值

1. keys() 取键名

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
keys = heros.keys()
print(keys)

#运行结果: dict_keys(['及时雨', '玉麒麟', '花和尚']),这里边的dict_keys 是一个可迭代对象

print(list(keys))

#运行结果:将结果转换成列表
#['及时雨', '玉麒麟', '花和尚']

 

2. values() 取键值

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
values = heros.values()
print(values)

#运行结果:dict_values(['宋江', '卢俊义', '鲁智深']) 也是一个可迭代对象

print(list(values))
#运行结果:将结果转换成列表
#['宋江', '卢俊义', '鲁智深']

 

3. items() 获取字典里边的元素也就是键值对

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
items = heros.items()
print(items)

运行结果:dict_items([('及时雨', '宋江'), ('玉麒麟', '卢俊义'), ('花和尚', '鲁智深')])

print(list(items))
#运行结果:[('及时雨', '宋江'), ('玉麒麟', '卢俊义'), ('花和尚', '鲁智深')]

print(list(items)[0])

#运行结果:('及时雨', '宋江')

key, value = list(items)[0]
print(key)
print(value)
#运行结果:
#及时雨
#宋江

6. 复制 copy()

heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
heros_copy = heros.copy()
heros.pop('及时雨')
print(heros)
# 运行结果 {'玉麒麟': '卢俊义', '花和尚': '鲁智深'}
print(heros_copy)
# 运行结果:{'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}

 7. 遍历

1. 遍历key

复制代码
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
keys = heros.keys()
for key in keys:
    print(key)

"""
运行结果:
及时雨
玉麒麟
花和尚
"""
复制代码

2. 遍历value

复制代码
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
values = heros.values()
for value in values:
    print(value)
"""
运行结果:
宋江
卢俊义
鲁智深
"""
复制代码

3. 遍历item

复制代码
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
items = heros.items()
for item in items:
    print(item)

"""
运行结果:
('及时雨', '宋江')
('玉麒麟', '卢俊义')
('花和尚', '鲁智深')
"""
复制代码

4. 遍历key->value

复制代码
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
items = heros.items()
for key, value in items:
    print(f'{key}->{value}')

"""
运行结果:
及时雨->宋江
玉麒麟->卢俊义
花和尚->鲁智深
"""
复制代码
posted @ 2022-01-11 19:33  ElsaWang  阅读(128)  评论(0)    收藏  举报