简介介绍
dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型
-
字典同样可以用来 存储多个数据
通常用于存储 描述一个 物体 的相关信息 -
和列表的区别
列表 是 有序 的对象集合
字典 是 无序 的对象集合 -
字典用 {} 定义
字典特性
* 字典使用 键值对 存储数据,键值对之间使用 , 分隔
* 键 key 是索引
* 值 value 是数据
* 键 和 值 之间使用 : 分隔
* 键必须是唯一的
* key 必须为不可变数据类型(字符串、数字)
* 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
* 一个key对应的value可存放任意数据类型,可修改、可以不唯一
* 可嵌套,即value也可以是dict
* py3.7之前是无序的,3.7开始变成有序的。 ordered_dict
* 查询速度快,且不受dict的大小影响,至于为什么快?需要了解hash O (1)
字典用法
创建字典的两种方式
#第一种方式
msg1 = {
"name":"小C学安全",
"age":30
}
#第二种方式
msg2 = dict(name="小C学安全",age=30)
print(msg1)
print(msg2)
字典增删改查
msg={
"name":"小C学安全",
"age":30
}
#字典增加,修改
#字典[key] = value
msg["age"]=100
print(msg)
"""
{'name': '小C学安全', 'age': 100}
如果key存在,修改数据
如果key不存在,新建键值对
"""
msg.setdefault("height","180cm")
print(msg)
"""
{'name': '小C学安全', 'age': 100, 'height': '180cm'}
如果key存在,不会修改数据
如果key不存在,新建键值对
"""
msg2 ={
"height":"180cm"
}
msg.update(msg2)
print(msg)
"""
{'name': '小C学安全', 'age': 100, 'height': '180cm'}
将msg2字典数据合并到msg1
"""
#字典查询
"""
字典[key] 从字典中取值,key不存在会报错
字典.get(key) 从字典中取值,key不存在不会报错
字典.keys() 所有key列表
字典.values() 所有value 列表
字典.items() 所有(key,value)元组列表
"""
# print(f'通过msg["name"]直接查询结果:{msg["name"]}')
#通过msg["name"]直接查询结果:小C学安全
# print(f'通过msg.get("name")直接查询结果:{msg.get("name")}')
#通过msg.get("name")直接查询结果:小C学安全
# print(f'查询所有key列表,msg.keys():{msg.keys()}')
#查询所有key列表,msg.keys():dict_keys(['name', 'age'])
# print(f'查询所有values,msg.values():{msg.values()}')
#查询所有values,msg.values():dict_values(['小C学安全', 30])
# print(f'查询所有(key,value)元组列表,msg.items():{msg.items()}')
#查询所有(key,value)元组列表,msg.items():dict_items([('name', '小C学安全'), ('age', 30)])
#批量创建
# names=["小C学安全","Python"]
# msg2=dict.fromkeys(names,"2")
# print(msg2)
# #{'小C学安全': '2', 'Python': '2'}
#拷贝
# msg1 =msg.copy()
# print(msg1)
#{'name': '小C学安全', 'age': 30}
#字典删除
del msg["name"]
print(msg)
"""
{'age': 100, 'height': '180cm'}
删除键值对,key不存在会报错
字典.pop(key) 删除指定键值对,key不存在会报错
字典.popitem() 随机删除一个键值对3.7以前
字典.clear() 清空字典数据
"""
字典循环遍历
msg={
"name":"小C学安全",
"age":30
}
#循环key值
for key in msg.keys():
print(key)
"""
name
age
"""
for key,values in msg.items():
print(key,values)
"""
name 小C学安全
age 30
"""
for key in msg:
print(key)
"""
name
age
"""
字典推导式
"""
语法一:
key:字典中的key
value:字典中的value
dict.items():序列
condition:条件表达式
key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
value_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
'''
{key_exp:value_exp for key,value in dict.items() if condition}
'''
语法二:
key:字典中的key
value:字典中的value
dict.items():序列
condition:条件表达式
key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
value_exp1:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp1处理
value_exp2:在for循环中,如果条件表达式condition不成立(即条件表达式不成立),返回对应的key,value并作key_exp,value_exp2处理
'''
{key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}
"""
# 案例一:获取字典中key值是小写字母的键值对
dict1 = {"a": 10, "B": 20, "C": True, "D": "hello world", "e": "小C学安全"}
dict2 = {key: value for key, value in dict1.items() if key.islower()}
print(dict2)
# 案例二:将字典中的所有key设置为小写
dict3 = {key.lower(): value for key, value in dict1.items()}
print(dict3)
# 案例三:将字典中所有key是小写字母的value统一赋值为'error'
dict4 = {key: value if key.isupper() else "error" for key, value in dict1.items()}
print(dict4)
标签:name,Python,value,print,dict,key,msg,字典
From: https://www.cnblogs.com/fuchangjiang/p/17955871