字典的基础知识

一 字典的 简单介绍 

  字典(dic) 是 python中 唯一的一个映射类型,他是以 {} 括起来的键值对组成,在 dic 中 key 是唯一的,

在保存的时候,根据 key 来计算出一个内存地址,然后将 key-value 保存再这个地址中,这种算法被称为

hash 算法,所以,切记,切记,切记,在 dic 中 存储的 key-value 中的 key 必须是可 hash 的,

可 hash 的 就是不是不可 改变的 

已知的 可 哈希(不可变) 的 数据类型: int str tuple bool

            不 可 哈希(可变) 的数据类型: list  set

语法:

{key1:value1,key2:value2....}

注意: key 必须是不可变(可哈希)的,value没有要求,可以保存任意类型的数据 

合法

dic = {1:4,True:99,"id":11,"name":"哈哈哥","stu":["水哥","哈哈哥"],(1,2,3):"麻花藤"}
print(dic[1])
print(dic[True])
print(dic["id"])
print(dic[(1,2,3)])

不合法
dic = {[1,2,3]:"周杰伦"}
dic = {{1:2}:"哈哈"}
dic = {{1,2,3}:"呵呵"}

dic 保存的数据不是按照我们添加进去的顺序保存的 ,是按照 hash 表的顺序保存的, 而 hash 表 不是连续的,

所以不能进行切片 工作,它只能通过 key 来获取dic 中的数据

二 字典的增删改查 和 其他操作

1.增加

##  dic[key] = 值   如果dic 中 没有出现这个 key,就会新增一个 key-value的组合 进 dic
dic = {}
dic["name"] = "哈哈哥"
dic["age"] = 18
print(dic)       #{'name': '哈哈哥', 'age': 18}

# 如果 dic 中没有 出现这个 key-value,可通过 setdefault 设置默认值
dic.setdefault("李嘉诚","房地产")
# 如果dic 中已经存在,那么 setdefault 将不会起作用
print(dic)

2.删除

# dic = {"周星驰":"喜剧之王","李建杰":"功夫之王","刘德华":"帅气"}
# ret = dic.pop("周星驰")
# print(ret)
# print(dic)

## pop 有返回值,如果 删除的 key 在 dic 中,则返回 key 对应的 value
##     如果删除的 key 不存在 会报错,
###   dic.pop("哈哈哥","不存在")  可以加一个参数进去,返回值就是这个参数

# dic = {"周星驰":"喜剧之王","李建杰":"功夫之王","刘德华":"帅气"}
# del dic["周星驰"]
# print(dic)

dic = {"周星驰":"喜剧之王","李建杰":"功夫之王","刘德华":"帅气"}
ret = dic.popitem()
print(dic)
### python 以前的版本 ,随机删除,现在3.6以上版本,删除最后一项
print(dic.popitem())
# 返回的是    ('刘德华', '帅气')
dic.clear()
## 全部清空

3.改

dic = {"k1":"喜剧之王","李建杰":"功夫之王","刘德华":"帅气"}
dic1 = {"k1":"张敏","k2":"张曼玉","k3":"朱茵","k4":"邱淑贞"}

dic.update(dic1)
## 把 dic1 中的 内容 更新到 dic 中,如果 key 重名,则修改替换,如果不存在 key, 则 新增
print(dic1)
print(dic)

4.查

查询一般用 key 来查询具体的数据

dic = {"k1":"张敏","k2":"张曼玉","k3":"朱茵","k4":"邱淑贞"}

print(dic["k1"])  #  张敏
print(dic.get("k2")) ## 张曼玉

print(dic.get("哈哈哥"))   ##  不存在 返回 None  推荐 使用
print(dic.get("哈哈哥","牛B"))   ##  返回  牛B

5.其他相关操作

dic = {"id":123,"name":"哈哈哥","age":18,"ok":"乔丹"}
# print(dic.keys())  # dict_keys(['id', 'name', 'age', 'ok'])   高仿列表 当成列表用

# for key in dic.keys():
#     print(key)          # <class str>   得到所有的 key  字符串形式的

## print(dic.values())  ## dict_values([123, '哈哈哥', 18, '乔丹'])  高仿列表 当成列表用

# for value in dic.values():
#     print(value)          ##  得到所有的 value 值


## print(dic.items()) # #dict_items([('id', 123), ('name', '哈哈哥'), ('age', 18), ('ok', '乔丹')])
####   也是个 列表,只是 列表中 装的是 元祖
for k,v in dic.items():
    print(k,v)

## 结构
a,b = 1,2
print(a,b)   ## 1 2

(c,d) = 3,4
print(c,d)   ## 3 4

e,f = [1,2,3]
print(e,f)       ## 报错 ,结构的时候 注意 数量必须匹配
原文地址:https://www.cnblogs.com/wenqi2121/p/10216691.html