python 字典详解

字典

字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示
d = {key1 : value1, key2 : value2, key3 : value3 }
区别
列表和字典区别
列表:强调整体,记录整体的某一个特征
字典:强调个体,记录个体的多个特征。

介绍

创建

# 创建
a = dict(a=1, b=2, c=3)
print(a)  # {'a': 1, 'b': 2, 'c': 3}
b = {'a': 1, 'b': 2, 'c': 3}
print(b)  # {'a': 1, 'b': 2, 'c': 3}
''' 
字典键的特性

字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行,有特殊的要求,两个重要的点需要记住:
1)唯一性:不允许同一个键出现两次,创建时如果同一个键被赋值两次,后一个值会被记住。
2)不可变:键必须不可变,所以可以用数字,字符串或元组充当,所以用列表、字典等就不行。
'''

方法-增加

方法描述
字典名[key] = value键不存在,将键值对添加到字典最后;如果key存在,则覆盖
setdefault(key,default_value):键不存在,将键值对添加到字典最后。如果key存在,则不覆盖。
zs = {'name':'zs',"age":20,'height':170}
# 增加键值对:weight
zs['weight'] = 70
print(zs)  # {'name': 'zs', 'age': 20, 'height': 170, 'weight': 70}
# 覆盖掉原值
zs['weight'] = 80
print(zs)  # {'name': 'zs', 'age': 20, 'height': 170, 'weight': 80}
# 增加键值对:weight
zs.setdefault('weight',70)
print(zs)  # {'name': 'zs', 'age': 20, 'height': 170, 'weight': 80} 不覆盖
zs.setdefault('class',1)
print(zs)  # {'name': 'zs', 'age': 20, 'height': 170, 'weight': 80, 'class': 1} 

方法-删除

方法描述
pop(key)弹出,返回并删除指定键对应的值, dict.pop(‘key’)
popitem()弹出最后一个键值对(>=3.7)
clear()清空字典
del删除整个字典,或者通过字典的key删除对应键值对
zs = {'name': 'zs', "age": 20, 'height': 170}
# pop(key) # 返回删除的值
print(zs.pop('age'))  # 20
# popitem() # 返回删除的键值对
print("张三的重量是:", zs.popitem()[1])  # 张三的重量是: 170
print(zs)  # {'name': 'zs'}
# del
# del zs # 删除整个zs变量
zs = {'name': 'zs', "age": 20, 'height': 170}
del zs['name']  # 删除name键值对
print(zs)  # {'age': 20, 'height': 170}
# clear()
zs.clear()  # 清空字典
print(zs)  #{}

方法-修改

方法描述
字典名[key]=value通过key 添加value值,如果key存在则覆盖
update(dict)传递一个字典,如果key相同则覆盖,没有的key则添加
reversed(d)返回一个逆序获取字典键的迭代器
zs_1 = {'name': 'zs', "age": 20, 'height': 170}
zs_2 = {"name": 'zs', 'weight': 60, "age": 30}
zs_1.update(zs_2)
print(zs_1)  # 将另一个字典追加到这个字典内,相同的键不覆盖,不同的键就追加{'name': 'zs', 'age': 30, 'height': 170, 'weight': 60} 
print(zs_2)  # 没有变化 {'name': 'zs', 'weight': 60, 'age': 30}
zs_2.update(zs_1)
print(zs_1)  # 没有变化  {'name': 'zs', 'age': 30, 'height': 170, 'weight': 60}
print(zs_2)  # {'name': 'zs', 'weight': 60, 'age': 20, 'height': 170}

# python 3.8
d = {"one": 1, "two": 2, "three": 3, "four": 4}
print(d)  # {'one': 1, 'two': 2, 'three': 3, 'four': 4}
print(list(reversed(d)))  # ['four', 'three', 'two', 'one']
print(list(reversed(d.values())))  # [4, 3, 2, 1]
print(list(reversed(d.items())))  # [('four', 4), ('three', 3), ('two', 2), ('one', 1)]

方法-查

注意: 
keys,values,items 获得的类型不是列表,但是是可迭代对象,可以直接使用for
循环遍历,如果需要按照列表方式操作,需要先转化为列表。
方法描述
根据key查找通过指定的key找对应的值 dict[‘key’]
keys()获取字典所有的键
values()获取字典所有的值
items()获取字典所有的键值对
zs = {'name':'zs',"age":20,'height':170}
for i in zs.keys():
    print(i) # 打印所有的键 name age height
for i in zs.values():
    print(i) # 打所有的值zs 20 170
for i in zs.items():
    print(i) # 打印所有的键值对(元组形式)('name', 'zs') ('age', 20) ('height', 170)
# 直接遍历字典,相当与遍历所有的键
for i in zs:
    print(i) # 打印所有的键 name age height

方法-其他操作

1:get(key,[返回的信息]) 以键取值,如果指定键不存在,默认返回None,可以指定返回内容

zs = {'name': 'zs', "age": 20, 'height': 170}
print(zs['name'])  # zs
# print(zs['hometown']) # 报错
# 使用get解决
print(zs.get('name', "没有找到"))  # zs
print(zs.get('hometown', "郑州"))  # 不报错,返回自定义信息  郑州

2:in , not in 字典的赋值和遍历

zs = {'name': 'zs', "age": 20, 'height': 170}
# 判定
if 'hometown' in zs:
    print("in")

if 'hometown' not in zs:
    print("not in")  # not in
  • 7
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值