Python-dict字典的使用

为记录学习的过程
python中 散列值 hash()
在字典dict中 每个键值对的key 存储到 内存中都是以散列值 地址值key 的方式存储的
每次获取相同值的散列值都是相等的 这样保证了一致性 ,假如重启项目 则散列值会发生变化
如果是数字类型的散列值 hash(123455) 数字在python 中 其数字本身就是对应的散列值
print(hash("abc"))
print(hash("bcd"))
print(hash(1233211234))
print(hash("abc"))

dict1={1233211234:"aaaaa","name":"张三"}
dict2={1233211234:"bbbbb","name":"李四"}
for k,v in dict1.items():
    if k == 1233211234:
        print(hash(k))

for k,v in dict2.items():
    if k == 1233211234:
        print(hash(k))
        
# 字典的更新与删除
dict2 = {"name": "张三", "age": 13, "birthday": "2020-01-01"}
print(dict2)
print("ages" in dict2)

# 判断是否包含 存在
print("name1" in dict2)

# 单个Key 更新
dict2["name"] = "李四"
print(dict2)
# 多个key 一起更新
dict2.update(name="王五", age=18)
print(dict2)

# 新增操作秉承 上面的操作一样 有则更新 无则新增
dict2["address"] = "重庆"
print(dict2)
dict2.update(address="北京")
print(dict2)

# 删除一个key 并返回删除的值
print("xxxxx" * 10)
delete = dict2.pop("address", "这是未删除到返回的默认值")
print(dict2.pop("address22", "这是未删除到返回的默认值"))
print(delete)
print(dict2)

# 默认删除最后一个key
delete2 = dict2.popitem()
print(delete2)
print(dict2)

# 清除所有数据
dict2.clear()
print(dict2)

# 设置字典 dict Json 默认值的方式
name1 = {"name": "张三", "age": 13, "grade": "b+"}
name2 = {"name": "李四", "age": 18}

# 方式1
# if "grade" not in name2:
#     name2["grade"]="c"

# 方式2 使用dict[].setDefault() 方法 设置默认值 存在则不更新 不存在则新增
name2.setdefault("grade", "c")
print(name1)
print(name2)
# 字典 dict Json items 视图的操作  需要记住  好东西!!!!!!!!!!!!!!!!!1
# dict.keys dict.values dict.items 为 键、值、键值对 视图格式化  type() 后 他们的数据结构并不是普通的dict 结构, 该结构为 dict_xxxx
# 在对原dict 数据操作时 视图化数据也会跟着变化  相当于原dict 的子集  并没有完全分离开
# 也可以理解为mysql 中的 视图  如果原数据发生了变化 则数据库中视图的数据也会跟着发生变化
keys = name1.keys()
values = name1.values()
items = name1.items()
print()
print(values)
print(items)
# 测试开始对原数据进行操作
name1["address"] = "重庆"
print(keys)
print(values)
print(items)

# 把字典 dict Json 数据格式化
# 新版本方式 str.format_map(dict)  的方式对字符串进行格式化
str1 = "我的名字是:{name},今年{age}岁了,我来自{address}".format_map(name1)
print(str1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值