Python入门系列8:dict( 字典)

字典也是 python 提供给我们的又一个非常重要且有用的数据结构。

字典在别的语言中有时叫关联数组、关联内存、Map等。

字典中存储的是一系列的key-value,这些key-value称之为键值对。

字典与前面学习的序列不同,序列通过index来索引数据,而字典则是通过key来索引value

一 字典创建方式

最好把字典认为是一系列无序键值对的集合。

通过字面量形式创建

把这些键值对用comma(逗号)隔开,再把这些键值对封装在一对brace(大括号)中。 键与值之间用冒号隔开。


tels = {
"ls": 1604,
"zs": 1000,
"ww": 2000
}

print(tels)


如果在 {} 中不添加任何的键值对,则创建了一个空的字典。如果把它当布尔值来用的话,就是表示 False

d = {}
print(d) # {}

使用dict() 构造器创建

使用 dict() 构造器传入键值对序列创建出字典


d = dict([['sape', 4139], ('guido', 4127), ('jack', 4098)])
print(d)


使用关键字参数创建

如果字典的key是简单的字符串的时候,通过关键字参数也可以方便的创建字典

d = dict(sape=4139, guido=4127, jack=4098)
print(d)


通过字典推导创建字典(类似列表推导)

# key是3-9的数字,value 是他的3次方
d = {x: x ** 3 for x in range(3, 10)}
print(d)

二 关于 key 的类型的限制


不是所有的类型的数据都可以做dictkeykey必须是不可变(immutable)类型。

value没有类型限制。

key不允许重复。

数字和字符串经常用做keytuple中如果存储的是数字、字符串或tuple 也可以做为key.

list是可变的,不能作为key, 如果tuple直接或者间接的包含了可变类型,也不能做为key


d = {
[10]: "abc" # list 不能作为 key
}


d = {
(10, 20), "hello" # tuple 可以作为 key
}


d = {
([10], [20]): "hello" # tuple 存储有可变类型,也不能做 key
}

三 dict 的常用操作


典的主要操作就是储存键值对、根据指定的key获取对应的value、删除键值对。

向字典中添加键值对

使用 字典名[键] = 值的方式去添加

d = {"a": 97}

d["b"] = 98 #向 dict中添加新的键值对 "b"就是键, 98就是值
d["c"] = 99
print(d)


如果添加的时候key已经存在了,则会用的新的值覆盖旧的值。

d = {"a": 97}
d["a"] = 970
print(d)


判断key是否在dict中存在

使用innot in来判断。

d = {"ac": 98, "ab": 99, "c": 97}

print("ac" in d)
print("d" not in d)


根据key获取value

直接使用字典名[键]的方式获取

d = {"a": 97}
print(d["a"]) # 97

如果访问不存在的key则会抛出异常。

d = {"ac": 98, "ab": 99, "c": 97}
print(d["aa"])

如果避免抛出异常,一般有 2 种方式:

  1. 先用 in 判断
d = {"ac": 98, "ab": 99, "c": 97}
if "aa" in d:
print(d["aa"])
  1. 使用字典的实例方法get(key)来访问
d = {"ac": 98, "ab": 99, "c": 97}
print(d.get("aa"))
print(d.get("aa", "随机给你的"))
print(d.get("ac", "随机给你的"))

删除key-value

使用关键字del可以删除指定keykey-value对。

d = {"a": 97, "b": 98, "c": 99}
del d["a"]

print(d)

也可以使用字典的dict.pop(key)来删除指定key的键值对


获取所有的key

通过list(dict.keys())可以获取在字典中所有的key组成的list,这些 key 的顺序是随机的。

d = {"a": 98, "b": 99, "c": 97}

list1 = list(d.keys())
print(list1)


如果想获取排好序的key可以会用sorted(dict.keys())

d = {"ac": 98, "ab": 99, "c": 97}

list1 = sorted(d.keys())
print(list1)


获取所有的 value

通过list(dict.values())可以获取在字典中所有的 value 组成的list,这些 value 的顺序是随机的。

d = {"a": 98, "b": 99, "c": 97}

list1 = list(d.values())
print(list1)


如果想获取排好序的key可以会用sorted(dict.keys())

d = {"ac": 98, "ab": 99, "c": 97}

list1 = sorted(d.keys())
print(list1)


合并字典

dict.update(other_dict)

清空字典

dict.clear()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值