Python精通-Python字典操作
导语
之前的内容中分享了关于数字、字符串、布尔值、列表、元组等数据类型,接下来看一个与之前的数据结构不一样的数据类型。字典,这里的字典与我们使用的字典是不一样的,它有点类似于编程意义上的Map,是以键值对的方式来进行表示的。下面就来详细看一下Python中的字典这种数据类型。
文章目录
- 字典
- 字典基本操作
- 基本结构和Value
- 字典的Key
- 字典是无序的
- 获取字典数据
- 删除字典的元素
- 字典遍历
- 字典高级操作
- def clear(self)
- def copy(self)
- def fromkeys(*args, **kwargs)
- def get(self, *args, **kwargs)
- def items(self)
- def keys(self)
- def values(self)
- def pop(self, k, d=None)与def popitem(self)
- def setdefault(self, *args, **kwargs)
- def update(self, E=None, **F)
- 整理基本数据类型
- 数字
- 字符串
- 列表
- 元组
- 字典
- 布尔值
- 总结
字典
字典基本操作
基本结构和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等,如果想要更好的使用好字典还是要多多进行编程操作。并且在编程过程中进行思考。
还没有评论,来说两句吧...