#!/usr/bin/env python# -*- coding:utf-8 -*-# __author__:anxu.qi# Date:2018/11/30

info = {    'stu1101': "TengLan Wu",    'stu1102': "LongZe Luola",    "stu1103": "XiaoZe Maliya",}
############################  字典  dict  ##################################
key-value 键值对的数据的集合可变的、无序的、key不重复

字典是无序的字典的 key 是按照哈希来进行保存的,所以字典的key一定要能被哈希,被哈希就是不可变的。
      注:字典的key不能是:列表,字典
字典的value 可以是任意值
# 字典的每一个元素,都是键值对, 而且是无序的user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}## 索引# print(user_info['age'])# 30

## 切片没有

自定定义:两种方式都可以,推荐使用第一种
字典定义 dict  定义 初始化  d = dict()   或者 d = {}  dict(**kwargs)  使用 name=value 初始化一个字典  dict(iterable,**kwarg) 使用可迭代对象和name=value对 来构造字典 。  不过可迭代对象必须是一个二元结构。    d = dict(((1,'a'),(2,'b')) 或者 d = dict(([1,'a'],[2,'b']))

 

####################################### 多级字典的嵌套示例 #############################################

# key 尽量不要写中文,因为有时候编码不一致,取不出来值av_catalog = {    "欧美":{        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]    },    "日韩":{        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]    },    "大陆":{        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]    }}av_catalog["大陆"]["1024"][1] = "可以再国内做镜像"print(av_catalog)

# 打印所有的值  values()print(av_catalog.values())

# 打印所有的key keys()print(av_catalog.keys())

# 字典是无序的,是没有下标的,可以根据key来获取具体的值#################### 字典 查 #################################print(info)# {'stu1103': 'XiaoZe Maliya', 'stu1102': 'LongZe Luola', 'stu1101': 'TengLan Wu'}# 方式一:print(info["stu1101"])    # info 存在则不会报错,不存在就会报错

# 方式二print(info.get("stu110113"))   # get 有就返回该值,没有这个值就返回None# None# TengLan Wu

# 方式三: inprint("stu1103" in info)  # 等与 python2.x info.has_key("stu1103")

#################### 字典 改 #################################info["stu1101"] = "武藤兰"   # 存在直接替换print(info)# {'stu1102': 'LongZe Luola', 'stu1101': '武藤兰', 'stu1103': 'XiaoZe Maliya'}

#################### 合并更新 update ####################################a = {    'stu01':"nginx",    'stu02':"mysql",    'stu03':'zabbix'}b = {    'stu01':"tami",    1:3,    2:5}a.update(b)print(a)# {'stu03': 'zabbix', 'stu02': 'mysql', 2: 5, 'stu01': 'tami', 1: 3}# 把b作为一个参数传为了update,把两个字典合并,如果a字典中有和b字典中相同的key,则覆盖a中的value# 如果没有这个kye那么,将b中的key和value都添加到a字典中

#################### 字典 增 ##################################

info["stu1104"] = "CangJingkong"  # 不存在则创建一条print(info)# {'stu1104': 'CangJingkong', 'stu1102': 'LongZe Luola', 'stu1101': '武藤兰', 'stu1103': 'XiaoZe Maliya'}

# 创建一个新的值 ,去字典里能取到我就返回,如果取不到我就设置一个新的。av_catalog.setdefault("TaiWan", {"www.baiddu.com":[1, 2]})

#################### 字典 删 ################################### 方式一:del info["stu1101"]print(info)# {'stu1104': 'CangJingkong', 'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}# 方式二:info.pop("stu1102")   # 删除指定的元素,并可以拿到结果print(info)# {'stu1103': 'XiaoZe Maliya', 'stu1104': 'CangJingkong'}# 方式三: 随机删除一个元素,并可以拿到结果info.popitem()print(info)# {'stu1103': 'XiaoZe Maliya'}

c = {    'stu01': "tami",    1: 3,    2: 5}

# 只能等遍历时,收集好对应的key或者是value,再做处理

#####################  for 循环 ################## 循环字典的key 和 value# 注:以下方式一和方式二的区别:结果都是一样的,但是方式一比方式二高效很多,#     因为方式一只是通过key,找到key和value,方式二是将字典转换为列表后,通过key,value找到对应的值#     数据量不大还可以,数据量大的情况下非常占用资源费时间。# 方式一:for i in a:    print(i,a[i])# stu03 zabbix# stu01 nginx# stu02 mysql # 方式二:for k,v in a.items():    print(k,v)# stu03 zabbix# stu01 nginx# stu02 mysql
########################  keys ######################## 加上keys后,会输出所有的keyfor i in user_info.keys():    print(i)"""gendernameage """########################  values ######################## 加上values后,会输出所有的valuefor i in user_info.values():    print(i)"""VmissVsidaodengV30"""########################  items ######################## 加上items 后,会输出所有的itemfor k,v in user_info.items():    print(k,v)"""Kname VsidaodengKgender VmissKage V30"""##########################################################

user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}# 获取字典的所有的keyprint(user_info.keys())# dict_keys(['age', 'gender', 'name'])

# 获取字典的所有的值print(user_info.values())# dict_values([30, 'M', 'sidaodeng'])

# 获取字典所有的键值对print(user_info.items())# dict_items([('age', 30), ('name', 'sidaodeng'), ('gender', 'M')])

################################ del 删除 ###################################################  删除字典中的某个键值对user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}del user_info['Kage']   # 指定key,可以直接进行删除print(user_info,11110000000)# {'Kname': 'Vsidaodeng', 'Kgender': 'Vmiss'} 11110000000

############################### clear 清空字典 ########################################### def clear(self):  # real signature unknown; restored from __doc__# 清除所有内容user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}user_info.clear()print(user_info)# {}   # 返回一个空字典

############################### copy 浅复制 ########################################### def copy(self):  # real signature unknown; restored from __doc__# 浅copy举例:
# ##################### 静态方法:fromkeys ###################### 初始化一个字典,并附一个临时的值,和浅copy 类似,只copy一层。d = dict.fromkeys([6,7,8])      #根据序列,创建字典
d = dict.fromkeys([6,7,8],[100])注:如果后面是引用类型,那么都是copy的门牌号
print(d)# {8: None, 6: None, 7: None}

d = dict.fromkeys([6,7,8],"test")print(d)# {8: 'test', 6: 'test', 7: 'test'}d = dict.fromkeys([6,7,8],[1,{"name":"alex"},444])print(d)# {8: [1, {'name': 'alex'}, 444], 6: [1, {'name': 'alex'}, 444], 7: [1, {'name': 'alex'}, 444]}d[7][1]['name'] = "Jack wang"print(d)# {8: [1, {'name': 'Jack wang'}, 444], 6: [1, {'name': 'Jack wang'}, 444], 7: [1, {'name': 'Jack wang'}, 444]}
# ##################### get 方法 #####################根据key获取值,key不存在时,并制定默认值为None
def get(self, *args, **kwargs): # real signature unknown    """ Return the value for key if key is in the dictionary, else default. """    pass

############################### get  获取值  ########################################### def get(self, k, d=None):  # real signature unknown; restored from __doc__# 根据key获取值,如果key不存在,可以指定一个默认值。d是默认值user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}aa = user_info.get('Kname')   # 如果有这个值,就会打印出来value值print(aa)# Vsidaodeng

aa = user_info.get('Knameadasfad')  # 如果没有这个kye,就会打印None,但是不会报错print(aa)# None

# get 添加默认值aa = user_info.get('Kage','123')   # 如果存在这个key,就会将对应的value打印出来print(aa,1111)# V30 1111aa = user_info.get('Kage111','123')  # 如果没有aeg111这个key,那么就会给一个默认值123print(aa)# 123注:get是获取,不会改变原来的字典

# 通过索引也可以取,如果没有这个key,就会报错 # 所以,推荐使用,get("key") 来获取。

############################### in 是否存在 ########################################### 是检查字典中否有对应的keyuser_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}aaaa = 'Kname' in user_info.keys()print(aaaa)# True

aaaa = 'Kname1231' in user_info.keys()print(aaaa)# False

############################### iteritems ########################################### def iteritems(self):  # real signature unknown; restored from __doc__# 项可迭代user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}# 先不说,后期补充

###############################  pop  移除 ########################################### def pop(self, k, d=None):  # real signature unknown; restored from __doc__# 获取某个key,并在字典中移除掉注:pop 出来的是一个value,不是k,v对。
user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}bb = user_info.pop('Kage')print(bb)# V30print(user_info)# {'Kgender': 'Vmiss', 'Kname': 'Vsidaodeng'}

################################ popitem 随机移除  ########################################### def popitem(self):  # real signature unknown; restored from __doc__返回一个二元组 ,             可以使用 k,v = d.popitem
# 获取并在字典中移除,随机移除。user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}bbbb = user_info.popitem()print(bbbb)"""('Kage', 'V30')('Kgender', 'Vmiss')('Kname', 'Vsidaodeng')"""

############################### setdefault 设置值 ########################################### def setdefault(self, k, d=None):  # real signature unknown; restored from __doc__# 设置值,但是如果已经存在,则不设置,并获取当前key对应的值         如果不存在,会进行添加,并获取已经添加的值# 如果key不存在,则创建,如果存在,则返回已存在的值且不修改 user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}

############################### update  更新 ########################################### def update(self, E=None, **F):  # known special case of dict.update# 批量更新
# 已经存在的更新掉,不存在的则添加方式二:user_info = {    "Kname":"Vsidaodeng",    "Kage":"V30",    "Kgender":"Vmiss"}

he = {    "a":1,    "b":2,    "c":3}user_info.update(he)print(user_info)# {'b': 2, 'Kgender': 'Vmiss', 'Kage': 'V30', 'a': 1, 'c': 3, 'Kname': 'Vsidaodeng'}########################### update 添加 #############################################
he = {    "a":1,    "b":2,    "c":3}

# 方式一:he.update({"d":4})

print(he)

# {'b': 2, 'c': 3, 'd': 4, 'a': 1}

# 方式二:

he["e"]=5# print(he)
# {'b': 2, 'c': 3, 'd': 4, 'a': 1}举例说明:
ttt = (11,22,["alex",{"k1":"v1"}])

ttt[2][1]["k2"] = "v2"             # 方式一等同于下面的方式二
ttt[2][1].update({"k2":"v2"})      # 方式二
print(ttt)# (11, 22, ['alex', {'k2': 'v2', 'k1': 'v1'}])
 

字典dict 的key:
  set 集合 的元素就可以看做key,set可以看做dict的简化版
  hashable 可哈希才可以作为key,可以使用 hash() 测试
  key 不允许重复
  只要是将key用好了,就把字典用好了。

转载于:https://www.cnblogs.com/sidaofeng/p/9994796.html

python-字典方法(dict)知识整理相关推荐

  1. 第九章 python 字典(Dict)

    第九章 python 字典(Dict) 9-1 字典基本操作 列表与元组是依序排列可称是序列数据结构,只要知道元素的特定位置,即可使用索引观念取得元素内容,这一章的重点是介绍了字典,它并不是依序排列的 ...

  2. 字典(DICT)知识大全

    目录 一.定义 二.基础操作(增删改查) 三.字典的遍历 四.字典推导式 五.统计键值对数量 六.合并两个字典 七.清空字典 一.定义 你可以创建一个表示人的字典,然后想在其中存储多少信息就存储多少信 ...

  3. python 后端web框架知识整理

    1.Django 创建项目的命令? django-admin startproject 项目名称 python manage.py startapp 应用 app 名 2.Django 创建项目后,项 ...

  4. Python 字典初始化dict()和{}

    python字典初始化比较常用的两种方式:dict() 和 {} 性能方面,{}性能更好. 可以通过dist模块,查看两者的字节码: >>> import dis >>& ...

  5. Python字典(dict )的几种遍历方式

    1.使用 for key in dict遍历字典 可以使用for key in dict遍历字典中所有的键 x = {'a': 'A', 'b': 'B'} for key in x:print(ke ...

  6. Python 字典(dict)操作(update)、翻转字典

    0. 翻转字典(reverse_dict) word_index = imdb.get_word_index() reverse_word_index = dict([(index, word) fo ...

  7. Python爬虫_02_Python基础知识整理

    一.Python 1.1 注释 1.1 注释介绍 在我们工作编码的过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当的添加注释,以辅助自己 或者其他编码人员解读代码. 没注释的代码 有注释 ...

  8. Python字典(dict)与列表(list)与数组(nbarray)详解

    目录 一.字典 声明字典 空字典声明方式 普通声明方式(key:value = 1:1) 在字典里加入新的键值对 字典格式 字典的遍历 普通循环遍历与输出对应key的value 以横向方式遍历每个ke ...

  9. python字典方法汇总_python字典的操作总结

    1. 字典是无需的,唯一的,所以没有去重这一说 2.可以应用 if .... in\ont in .... 来判断字典是否有指定的KEY 3.字典的常用方法 删 del 语句 dict.clear() ...

  10. Python线程、进程知识整理

    一.python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 #!/usr/bin/env python2 # -*- coding:utf-8 -*-3 im ...

最新文章

  1. velocity.js 动画插件
  2. python官网如何调中文-django的settings中设置中文支持的实现
  3. java 取得日期_java-如何从某个日期获取日期列表?
  4. canvas象棋 画图
  5. 拆解 | 某平台19元的儿童电话手表,究竟怎么做到的?
  6. Android 控件之RatingBar评分条
  7. 全栈深度学习第1期:如何启动一个机器学习项目?
  8. android 中手势GestureDetector 的使用
  9. 残差网络ResNet
  10. Java使用POI导入excel教程
  11. c语言32关键字详解pdf,C语言32个关键字.pdf
  12. Oracle动态性能视图学习之v$session_longops
  13. Windows XP/2000实现自动登陆(加入域和未加域两种情况)
  14. 时间换算--C语言结构练习
  15. rows between unbounded preceding and current row等,unbounded ,preceding ,following,current row含义详解
  16. 使用python3抓取链家二手房数据
  17. Java入门基本数据类型(羊驼)
  18. 阿里云注销备案流程及注销备案常见问题与解答
  19. 【数位板常见问题】压感笔为什么没有压感了
  20. 编写代码、打印图4-2所示的图形python_Python之turtle库画各种有趣的图及源码(更新中)_一个超会写Bug的程序猿的博客-CSDN博客...

热门文章

  1. 前端ajax怎么样遍历list_五大前端小白入门时最容易掉的坑,可得提防点!
  2. tensorflow 入门笔记(二)
  3. html5 Canvas 绘制基本图形 从直线图形到使用路径 - 直线、矩形、路径、多边形、复杂组合图形
  4. 人月神话贯彻执行_《人月神话》读后感与读书笔记
  5. c语言中队列的作用,循环队列的实现(C语言)
  6. Spark内核解析之七:核心组件解析
  7. mysql中mapping标签的作用_3种高效的Tags标签系统数据库设计方案分享
  8. 经验原石_经验分享:挑战翡翠原石,新手实战前应做哪些准备
  9. spring mvc 中自定义404页面在IE中无法显示favicon.ico问题的解决方法。
  10. 0112 - 借用纸币发行门票