一.字典的简单介绍

字典是(dict)是python中惟一的一个映射类型,他是以{}括起来的键值对组成,在字典中key是唯一的,在保存的时候,根据key来计算出一个内存地址,然后将key-value保存保存在这个地址中,这种算法被称为hash算法,所以在字典中存储的key-value必须是可合适 hash的,(可以改变的都是不可hash的,hash意味着不可变)这是为了能够准确的计算内存地址而规定的.

不可变的数据类型:int,str,tuple,bool

可变的数据类型:list,dict,set

value没有要求,可以保存任意类型的数据.

 dic={132:45,True:999,'ig':1,(1,2,3):'nje'}
print(dic)
# {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}

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

 dic={132:45,True:999,'ig':1,(1,2,3):'nje'}
print(dic)
# {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}

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

1.增加

1.1 dic['key']='value'  

 dic={132:45,True:999,'ig':1,(1,2,3):'nje'}
print(dic)
# {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
1.2
  ⑴dic.setdefault('key')           #往字典里添加一个key,value默认为None,如果key已经存在,不会起任何作用
⑵dic.setdefault('key','value') #往字典里添加一个key-value
  dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
  dic.setdefault('李嘉诚')
  print(dic)
  #{132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje', '李嘉诚': None} #(1)   dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
  dic.setdefault('李嘉诚','房地产')
  print(dic)
  # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje', '李嘉诚': '房地产'} #(2)   dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
  dic.setdefault(132,'房地产')
  print(dic)
  # {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'} #如果key已经存在,不会起任何作用

2.删除

2.1 dic.pop('key')

dic.pop('key')
  dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
  ret=dic.pop(132) #通过key删除 返回被删除的value
  print(ret) #如果key不存在会报错
  print(dic)
  #
  # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
2.2 del dic['key']  
 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
  del dic[132]
  print(dic)
  # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
2.3 dic.popitem()  
 dic = {132: 45, True: 999, 'ig': 1, (1, 2, 3): 'nje'}
  del dic[132]
  print(dic)
  # {True: 999, 'ig': 1, (1, 2, 3): 'nje'}
2.4 dic.clear()  
 dic = {132: 45, True: 999, 'ig': 1,132:'gu',(1, 2, 3): 'nje'}
  dic.clear()
  print(dic)
  # {} #得到的是一个空的字典

3.修改

3.1
 dic[key]=value 强制修改
  dic = {132: 45, True: 999, 'ig': 1,132:'gu',(1, 2, 3): 'nje'}
  dic[132]=789
  print(dic)
  # {132: 789, True: 999, 'ig': 1, (1, 2, 3): 'nje'}

3.2 dic1.update(dic)
 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
dic1={1:'a',2:'b',132:46}
dic.update(dic1) #把dic 1中的内容更新到dic中,如果key重复,则修改替换,如果key不存在,就新增.
print(dic)
# {132: 46, '地方规划局': 999, 'ig': 1, (1, 2, 3): 'nje', 1: 'a', 2: 'b'}

4.查

4.1 dic.get(key)


 dic.get(key)
  dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
  print(dic.get(13,'好像虎')) #找不到key返回None,或者指定返回内容
  #好像虎

4.2 dic[key]
 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
  print(dic[132]) #
  print(dic[12]) #KeyError: 12 没有这个键的时候查询会报错
4.3 for循环
 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
for i in dic: #循环默认是去字典中的键
print(i)
#
# 地方规划局
# ig
# (1, 2, 3)

5.字典的其他操作

5.1 keys();values();items()

 dic = {132:45, '地方规划局': 999, 'ig': 1,(1, 2, 3): 'nje'}
  print(dic.keys()) # (高仿列表) 高仿列表暂时可以当做真的列表用,也可以迭代
  print(dic.values()) # (高仿列表)
  print(dic.items()) #也是高仿的列表,只不过里面装的是元组
  # dict_keys([132, '地方规划局', 'ig', (1, 2, 3)])
  # dict_values([45, 999, 1, 'nje'])
  # dict_items([(132, 45), ('地方规划局', 999), ('ig', 1), ((1, 2, 3), 'nje')])
5.2 解构(解包)
 a,b = ''  #将后边解构打开按位置赋值给变量 支持  字符串 列表 元组
  print(a)
  print(b)
  #
  #   dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
  for a,b in dic.items():
   print(a)
  print(b)
  # 易大师
  # 剑圣
  # 剑豪
  # 托儿所
  # 草丛伦
  # 大宝剑   dic = {'易大师':'剑圣','剑豪':'托儿所','草丛伦':'大宝剑'}
  for key,value in dic.items():
   print(key,value)
  # 易大师 剑圣
  # 剑豪 托儿所
  # 草丛伦 大宝剑

三,字典的嵌套

 dic = {'name':'汪峰','age':43,'wife':{'name':'国际章','age':39,'salary':100000},'baby':[{'name':'熊大','age':18},{'name':'熊二','age':15},]}

 dic['baby'][0]['age'] = 19
print(dic)

python中的基本数据类型之字典的更多相关文章

  1. python中不可变数据类型和可变数据类型

    在学习python过程中我们一定会遇到不可变数据类型和可变数据类型. 1.名词解释 以下所有的内容都是基于内存地址来说的. 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址 ...

  2. python中的特殊数据类型

    一.python中的特殊数据类型 对于python,一切事物都是对象,对象基于类创建.像是“wangming”,38,[11,12,22]均可以视为对象,并且是根据不同的类生成的对象. 参照:http ...

  3. 1. Python中的基本数据类型、运算、变量

    本文利用的是Python 3.x版本,建议学习3.x版本 Python中的基本数据类型.运算.变量 1. 基本数据类型 1.1 整数 py可以处理任意大小的整数,例如123,1234567891324 ...

  4. Python中列表,元组,字典,集合的区别

    参考文档https://blog.csdn.net/Yeoman92/article/details/56289287 理解Python中列表,元组,字典,集合的区别 列表,元组,字典,集合的区别是p ...

  5. python中的常用数据类型

    python中的常用数据类型 以下是个人总结的python中常见的数据类型,话不多说,我们直接步入正题: 数字类型 整型类:int类可以表示任意大小的整数值,在python中没有像JAVA或者C那样的 ...

  6. Python中多个列表与字典的合并方法

    Python中多个列表与字典的合并方法 1多列表的合并 1)a+=b a=['] b = ['] a += b print(a) >>>['] 2) a.extend(b) a=[' ...

  7. Python中的基本数据类型之列表与元组初步了解

    一.什么是列表 1.列表是Python中的基本数据类型之一用[]来表示,每一项元素由逗号隔开,列表什么都能装,(能装对象的对象) 2.可以用来存放大量数据 3.是一个可以改变的数据类型 二.列表的索引 ...

  8. Python中使用item()方法遍历字典的例子

    Python中使用item()方法遍历字典的例子 这篇文章主要介绍了Python中使用item()方法遍历字典的例子,for...in这种是Python中最常用的遍历字典的方法了,需要的朋友可以参考下 ...

  9. python中元组、列表、字典、集合知识

    像列表一样处理字符串: 仅需要看字符串的首字符就知道如何处理该字符串的情况也很常见.例如,如果有一个姓与名的列表,您可以使用与列表相同的语法查看名与姓的第一个字符.这种看待字符串的方法叫做分片(sli ...

随机推荐

  1. 前端构建工具里babel-polyfill的使用问题

    看了很多react工程的package.json文件,里面都没有使用babel-polyfill,那对ES6的新API是如何做到被IE9这样的浏览器识别的呢,难道在webpack打包的时候通过别的方式 ...

  2. jQuery中的Deferred和promise

    promise:http://www.alloyteam.com/2014/05/javascript-promise-mode/ 1 jQuery 中的 Deferred 和 Promises : ...

  3. 统计推断(statistical inference)

    样本是统计推断的依据: 统计推断的基本问题可以分为两大类: 估计问题 点估计, 区间估计 假设检验 1. 点估计 设总体 X 的分布函数 F(x;θ) 的形式已知,θ 是待估参数.X1,X2,-,Xn ...

  4. Qt常用函数 记录(update erase repaint 的区别)

    一界面重载函数使用方法:1在头文件里定义函数protected: void paintEvent(QPaintEvent *event); 2 在CPP内直接重载void ----------::pa ...

  5. WPF(C#)中Bitmap与BitmapImage相互转换

    原文:WPF(C#)中Bitmap与BitmapImage相互转换 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wangshubo1989/art ...

  6. WPF 用代码增加路由事件的方法

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  7. WPF VisualTreeHelper的使用

    <Window x:Class="MyWpf.MainWindow"        xmlns="http://schemas.microsoft.com/winf ...

  8. 用MVVM模式开发中遇到的零散问题总结(2)

    原文:用MVVM模式开发中遇到的零散问题总结(2) 本节目录: 1.解决动画属性被劫持问题 2.设置页面焦点默认所在对象 3.XAML模拟键盘按键 4.DataGrid数据源绑定到复杂格式(dynam ...

  9. 用树莓派和DS18B20做个汽车温度记录仪

    原文:用树莓派和DS18B20做个汽车温度记录仪 用树莓派和DS18B20做个汽车温度记录仪[原创] 很想知道夏日阳光暴晒下,汽车内的最高温度以及温度的变化情况.觉得用树莓派和DS18B20来实现应该 ...

  10. Visual C++ 编译器自动假定带 .C 扩展名的文件是 C 文件而不是 C++ 文件,并且拒绝 C++ 语法和关键字(c语言只能在大括号最前面申明变量)

    今天在编译OpenGL红宝书附带源码中的light.c文件时遇到一个诡异的问题: 如图light .c,在不做任何修改的情况编译OK.然而只要在某些地方写了可执行代码,则会无法通过编译器编译! (这几 ...