Python学习(004)-字典{}

Posted Nick

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习(004)-字典{}相关的知识,希望对你有一定的参考价值。

特点:
无序状态
键唯一
 
不可变类型:字符串、整型、元组
可变类型:列表、字典
 
字典创建
第一种:
dic1={name:Nick,"age":18,sex:man}
print(dic1[name])    ---------------->Nick

 第二种:

dic2=dict(((name,Nick),(age,18)))
print(dic2)    ---------------------->{name: Nick, age: 18}

第三种:

dic3=dict([[name,Nick],[age,18]])
print(dic3)   ------------->{name: Nick, age: 18}

1.新增
键有则修改,无则新增
如:
dic1={name:Nick,"age":18,sex:man}
dic1[num]=15755055016
print(dic1)  ------>{name: Nick, age: 18, sex: man, num: 15755055016}
dic1={name:Nick,"age":18,sex:man}
dic1[age]=15
print(dic1)  ------->{name: Nick, age: 15, sex: man}
setdefault方式
键存在,则不做动作
键不存在,则在字典中新增
如:
键存在:
dic1={name:Nick,"age":18,sex:man}
dic1.setdefault(age,34)
print(dic1)   --------->{name: Nick, age: 18, sex: man}

键不存在:
dic1={name:Nick,"age":18,sex:man}
dic1.setdefault(num,15755055016)
print(dic1)   ------------>{name: Nick, age: 18, sex: man, num: 15755055016}

setdefault是有返回值的

返回值中,若在原字典中新增了数据,则返回新增的值
若原字典存在这个键,则返回原字典的值
如:
新增
dic1={name:Nick,"age":18,sex:man}
b=dic1.setdefault(num,15755055016)
print(b)  --------->15755055016

键存在

dic1={name:Nick,"age":18,sex:man}
b=dic1.setdefault(age,24)
print(b)  -------->18

 

2.查
通过键去查询值
print(dic1[name])

打印字典中所有的键

dic1.keys() ------>dict_keys([name, age, sex])

结果非列表类型,若想要列表输出,需要转化

list(dic1.keys()) -------->[name, age, sex]

 

3.改
dic1更新dic,有的会被覆盖,没有的会被新增

dic1={name:Nick,"age":18,sex:man}
dic2=dict(((name,Nick),(age,19),(num,15755055016)))
dic1.update(dic2)
print(dic1)  --------->{name: Nick, age: 19, sex: man, num: 15755055016}
print(dic2)  --------->{name: Nick, age: 19, num: 15755055016}

4.删
删除字典中指定键值对

dic1={name:Nick,"age":18,sex:man}
del dic1[name]
print(dic1)  ------>{age: 18, sex: man}

删除字典中指定键值对,会有返回值
dic1={name:Nick,"age":18,sex:man}
a=dic1.pop(age)
print(a)  ------>18

清空整个字典
dic1={name:Nick,"age":18,sex:man}
dic1.clear()
print(dic1)  ------>{}      表示字典内的键值对被清空,但该字典仍然在内存中

随机删除键值对

dic1={name:Nick,"age":18,sex:man}
a=dic1.popitem()
print(a,dic1)  -------->(sex, man) {name: Nick, age: 18}

删除字典
dic1={name:Nick,"age":18,sex:man}
del dic1
print(dic1)  ------->报错,因为dic1字典被删除,不存在了

5.其他操作涉及的方法
dic=dict.fromkeys([host1,host2,host3],name)
print(dic)------>{host1: name, host2: name, host3: name}   #新建字典方式,但存在问题,涉及深浅拷贝,这里只会浅拷贝

字典的嵌套
输出时,遇到字典类型就用键,遇到列表就用位置
技术分享图片
av_catalog = {
    "欧美":{
        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
    },
    "日韩":{
        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    },
    "大陆":{
        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    }
}
av_catalog[欧美]["www.youporn.com"][1]=高清
print(av_catalog)   ------>可修改成功
View Code

排序 (依据键值进行排序)
dic={2:555,4:666,1:111,3:222}
print(sorted(dic))   ---->[1, 2, 3, 4]
print(sorted(dic.values()))   ------>[111, 222, 555, 666]
print(sorted(dic.items()))    ------>[(1, 111), (2, 555), (3, 222), (4, 666)]

遍历
打印键
for i in dic1:
print(i)   ------>name age sex

打印键与值
print(i,dic1(i))   
name Nick
age 18
sex man 直接快速高效的方法
for i,v in dic1.items():
    print(i,v)

name Nick
age 18
sex man 需要转换,耽误时间,效率低

打印键值对
for i in dic1.items():
    print(i)    ------>
(name, Nick)
(age, 18)
(sex, man)

 



































以上是关于Python学习(004)-字典{}的主要内容,如果未能解决你的问题,请参考以下文章

004 Python 文件操作 字典 自定义函数

Robot Framework_004——字典的创建、合并和嵌套

Redis2.6源代码走读第004课:字典的实现02

13 个非常有用的 Python 代码片段

Python代码阅读(第19篇):合并多个字典

Redis2.6源代码走读第004课:字典的实现03