- Key键必须是唯一的,不可出现重复的键
- 值可以取任何数据类型,但是键只能使用字符串,数字,或者元组
- 字典是一个无序的数据集合,使用print输出字典时,通常输出顺序和定义顺序不一样
取key和取value
a_dict = {"id":"123", "name":"wuyin", "site":"www"}
或者:a_dict= dict(id="123",name="wuyin",site="www")
a_dict["id"] # 会输出123
两种写法
a_dict = {"id":"123", "name":"wuyin", "site":"www"}
a_dict = {
"id":"123",
"name":"wuyin",
"site":"www"}
修改和添加
a_dict[key] = value # 如果key存在则是对其值进行修改;若key不存在就是新添加一个键值对
字典的内置函数
type() # 检测括号中的数据类型
id() # 取括号中的变量地址,如果是id(a_dict[])则是取元素的地址
del a_dict # 或者 del(a_dict) 这种形式 ,则会把a_dict整个内存删除,再次输出会报错,和方法的clear()作对比
len() # 统计括号中字典的键值对个数
id() # 取括号中变量的地址,如果是a_dict[]这种形式,则表示取该索引下元素的地址
字典的内置方法
查
a_dict.keys() # 会输出所有的key 如:dict_keys(['id', 'name', 'site'])
a_dict.values() # 会输出所有的value 如:dict_values(['123', 'wuyin', 'www'])
a_dict.items() # 会输出所有的key和value元组列表(记得和直接输出作对比) 如:dict_items([('id', '123'), ('name', 'wuyin'), ('site', 'www')])
删
a_dict.pop(key) # 删除指定值,key不存在会报错 和内置函数 del 作对比
a_dict.popitem() # 随机删除一个键值对
a_dict.clear() # 清空字典
改
a_dict.setdefault(key, value) # 如果key存在就不会修改数据;如果key不存在,就新建键值对 和a_dict[]作对比
合并
a_dict.update(字典2) # 将字典2的数据合并到字典1
'''
注:字典2中存有和字典1相同的key,则字典2中的值会将字典1中的该键值对替换
'''
循环遍历
a_dict = {"id":"123", "name":"wuyin", "site":"www"}
for i in a_dict:
print(i)
'''
会输出:
id
name
site
'''
a_dict = {"id":"123", "name":"wuyin", "site":"www"}
for i in a_dict:
print(a_dict[i])
'''
会输出:
123
wuyin
www
'''
a_dict = {"id":"123", "name":"wuyin", "site":"www"}
for i in a_dict:
print(i, ":", a_dict[i])
'''
会输出:
id : 123
name : wuyin
site : www
'''
字典推导式
'''
格式:
{key:value for variable in iterable [if expression]}
执行步骤:
• 1、for 循环:遍历可迭代对象,将其值赋给变量。
• 2、if 语句:筛选满足 if 条件的结果。
'''
b_dict = {i:i*2 for i in range(5)}
print(b_dict)
会输出:{0: 0, 1: 2, 2: 4, 3: 6, 4: 8}
b_dict = {i:i*2 for i in range(5) if i<3}
print(b_dict)
会输出:{0: 0, 1: 2, 2: 4}
拓展
其他3种方法创建字典
- b_dict = {i:i2 for i in range(5)}
- dict(Runoob=1, Google=2, Taobao="wuyin") # 会输出:b_dict = {i:i2 for i in range(5)}
- dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)]) # 会输出:{'Runoob': 1, 'Google': 2, 'Taobao': 3} 其实这就是元素为元组的字典