博客
关于我
Python精通-Python字典操作
阅读量:799 次
发布时间:2023-03-28

本文共 3744 字,大约阅读时间需要 12 分钟。

字典

字典基本操作

基本结构和Value

通过下面的例子可以看出,对于这个字典的键值对来说,它的Value可以任何值。
info = {      "k1": "v1",      "k2": 12,      "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 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

转载地址:http://hvhfk.baihongyu.com/

你可能感兴趣的文章
Objective-C实现最优二叉搜索树算法(附完整源码)
查看>>
Objective-C实现最大和连续子序列算法(附完整源码)
查看>>
Objective-C实现最大的非常大的数字算法(附完整源码)
查看>>
Objective-C实现最大类间方差法OTSU算法(附完整源码)
查看>>
Objective-C实现最大非相邻和算法(附完整源码)
查看>>
Objective-C实现最小二乘多项式曲线拟合(附完整源码)
查看>>
Objective-C实现最小二乘法(附完整源码)
查看>>
Objective-C实现最小值滤波(附完整源码)
查看>>
Objective-C实现最小公倍数LCM算法(附完整源码)
查看>>
Objective-C实现最小生成树 boruvka算法(附完整源码)
查看>>
Objective-C实现最小编辑距离问题算法(附完整源码)
查看>>
Objective-C实现最小路径和算法(附完整源码)
查看>>
Objective-C实现最快的归并排序算法(附完整源码)
查看>>
Objective-C实现最短路径Dijsktra算法(附完整源码)
查看>>
Objective-C实现最近点对问题(附完整源码)
查看>>
Objective-C实现最长公共子序列算法(附完整源码)
查看>>
Objective-C实现最长回文子串算法(附完整源码)
查看>>
Objective-C实现最长回文子序列算法(附完整源码)
查看>>
Objective-C实现最长子数组算法(附完整源码)
查看>>
Objective-C实现最长字符串链(附完整源码)
查看>>