Python精通-Python字典操作

本文深入解析Python中的字典数据类型,包括其基本操作、高级功能及应用技巧,适合初学者和进阶者阅读。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导语
  之前的内容中分享了关于数字、字符串、布尔值、列表、元组等数据类型,接下来看一个与之前的数据结构不一样的数据类型。字典,这里的字典与我们使用的字典是不一样的,它有点类似于编程意义上的Map,是以键值对的方式来进行表示的。下面就来详细看一下Python中的字典这种数据类型。

字典

字典基本操作

基本结构和Value

  通过下面的例子可以看出,对于这个字典的键值对来说,它的Value可以任何值。

# 字典

#dict

info={
    "k1":"v1",
    "k2":"v2"
}

info={
    "k1":12,
    "k2":True,
    "k3":[11,22,33,{"kk1":"vv1"}],
    "k4":(11,22,33,44)
}

字典的Key

上面演示了在字典中的值是可以任意进行写的,但是在字典中对于键的操作又是什么样子呢?实际上在内存中的字典是通过Hash表进行存储的。所以说对于列表、字典是不能作为字典的key,因为他们在内存中不能实现Hash 操作

info ={
    1:"nihui",
    "k1":"nihui",
    True:"123",
    # [12,13]:123,
    ("tet","123"):"nihui",
    {12,23}:"th"
}
print(info)

字典是无序的

  通过下面代码进行打印,在经过测试之后发现每次print的字典都是不一样的,所以说明字典是无序的


info={
    "k1":12,
    "k2":True,
    "k3":[11,22,33,{"kk1":"vv1"}],
    "k4":(11,22,33,44)
}

print(info)

获取字典数据

  由于字典中的数据时无序的,所以不能通过之前的索引或者是切片获取其中的值,但是字典也提供了一种查找值的操作,由于是kv的形式,所以可以直接通过key定位到对应的值。


info={
    "k1":12,
    "k2":True,
    "k3":[11,22,33,{"kk1":"vv1"}],
    "k4":(11,22,33,44)
}

v = info["k1"]
print(v)

删除字典的元素

  可以看到通过下面这种方式是可以对k1 进行删除操作的。也就是说字典可以进行del删除的。

info={
    "k1":12,
    "k2":True,
    "k3":[11,22,33,{"kk1":"vv1"}],
    "k4":(11,22,33,44)
}

del  info["k1"]
print(info)

字典遍历

  对字典进行for循环的时候,默认就是对于key的循环


info={
    "k1":12,
    "k2":True,
    "k3":[11,22,33,{"kk1":"vv1"}],
    "k4":(11,22,33,44)
}
# 获取键
for item in info:
    print(item)

for item in  info.keys():
    print(item)
# 获取值
for item in  info.values():
    print(item)

# 获取键值
for item in info.items():
    print(item)

字典高级操作

def clear(self)

表示清除字典中的数据

info={
    "k1":12,
    "k2":True,
    "k3":[11,22,33,{"kk1":"vv1"}],
    "k4":(11,22,33,44)
}

info.clear()
print(info)

def copy(self)

进行字典的拷贝操作

info={
    "k1":12,
    "k2":True,
    "k3":[11,22,33,{"kk1":"vv1"}],
    "k4":(11,22,33,44)
}

v = info.copy();
print(info)
print(v)

def fromkeys(*args, **kwargs)

@staticmethod # known case
def fromkeys(*args, **kwargs)

可以看到这个方法是一个静态方法,通过可以通过dict,直接进行调用。从方法的返回值来看,它其实将第一个参数作为字典的key,以第二个参数为value自动生成了一个字典。

v = dict.fromkeys(["k1",123,"999"])
print(v)

v = dict.fromkeys(["k1",123,"999"],123)
print(v)

def get(self, *args, **kwargs)

根据Key获取值,如果对应的key不存在的时候,会返回第二个参数指定的值,当然也可以使用默认值。而不像是通过[] 进行取值如果key不存在则会直接报错。

info={
    "k1":12,
    "k2":True,
    "k3":[11,22,33,{"kk1":"vv1"}],
    "k4":(11,22,33,44)
}

v = info["k1"]
print(v)

v1 = info.get("11111",123)
print(v1)

def items(self)

获取字典的kv集合

def keys(self)

获取字典的key集合

def values(self)

获取字典value集合


info={
    "k1":12,
    "k2":True,
    "k3":[11,22,33,{"kk1":"vv1"}],
    "k4":(11,22,33,44)
}
# 获取键
for item in info:
    print(item)

for item in  info.keys():
    print(item)
# 获取值
for item in  info.values():
    print(item)

# 获取键值
for item in info.items():
    print(item)

def pop(self, k, d=None)与def popitem(self)

移除指定的key,但是def popitem(self)方法并没有参数也就是说随机删除一个元素。

dic = {
    "k1":"v1",
    "k2":"v2"
}

v = dic.pop("k1")
print(v)

v1 = dic.popitem()
print(v1)

def setdefault(self, *args, **kwargs)

设置默认设置,如果key存在则不设置并且返回对应的值,如果key不存在,进行设置并且返回新值。

dic = {
    "k1":"v1",
    "k2":"v2"
}

v = dic.setdefault("k1","123")
print(dic)
print(v)

v1 = dic.setdefault("k3","456")
print(dic)
print(v1)

def update(self, E=None, **F)

更新字典的中的数据,如果指定的key存在则进行更新,如果不存在则进行添加。

dic = {
    "k1":"v1",
    "k2":"v2"
}

dic.update({"k1":"1231231","k3":123})
print(dic)

dic.update(k1 = 123,k3=213,k5="12321");
print(dic)

整理基本数据类型

数字

将某个数据类型转换为数字使用int()

字符串

replace/find/join/strip/startwith/split/upper/lower/format等函数

tempalte =" this is {name} age:{age}"
v = tempalte.format(name="nihui",age=24)
v1 = tempalte.format(**{"name":"nihui","age":12})
print(v)
print(v1)

列表

append/extend/insert等函数
索引、切片、循环

元组

索引、切片、循环

一级元素不能被修改、删除、增加

字典

get/update/keys/values/items等函数

for循环、索引

以上都可以进行in操作。对于in操作也是一个基本操作

dic = {
    "k1":"v1",
    "k2":"v2"
}

v = "k1" in dic
print(v)

布尔值

使用 0 1
bool()操作
在以下这些场景中的布尔值为FALSE
None 、""、() 、[]、{} 0

总结

  在字典中对于上面函数最常用的就是keys、values、items、update等,如果想要更好的使用好字典还是要多多进行编程操作。并且在编程过程中进行思考。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

nihui123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值