字典是许多数据的集合,属于可变序列类型,它是无序的可变序列,其保存的内容是以“键值对”的形式存放的。

Python 中,字典的数据类型为 dict,通过 type() 函数即可查看。

字典类型所具有的主要特征:

(1)通过键而不是通过索引来读取元素。

(2)字典是任意数据类型的无序集合。

(3)字典是可变的,并且可以任意嵌套。

(4)字典中的键必须唯一。

(5)字典中的键必须不可变,因此只能使用数字、字符串或者元组,不能使用列表。

======创建字典======

1.赋值创建

Python 字典类型的语法格式如下:

dictname = {'key':'value1','key2':'value2',...,'keyn':valuen}

其中 dictname 表示字典类型名,keyn : valuen 表示各个元素的键值对。需要注意的是,同一字典中各个元素的键值必须唯一。

示例:

adict = {'a':1,'b':2,'c':3}
print(adict)
bdict = {}
print(bdict)
cdict = {(1,2):'good','bad':[1,2]}
print(cdict)

结果:

{'a': 1, 'b': 2, 'c': 3}
{}
{(1, 2): 'good', 'bad': [1, 2]}

2.通过fromkeys()方法创建

Python 中,还可以使用 dict 字典类型提供的 fromkeys() 方法创建所有键值为空的字典,使用此方法的语法格式为:

dictname = dict.fromkeys(list,value=None)

其中,list 参数表示字典中所有键的列表,value 参数默认为 None,表示所有键对应的值。此种创建方式,通常用于初始化字典,设置 value 的默认值。

示例:

ddict = {"a":1,'b':2}
edict = dict.fromkeys(ddict)
print(edict)

结果:

{'a': None, 'b': None}

3.通过dict()映射函数创建

fdict = dict(a=1,b=2,c=3)      #使用此方式创建字典时,字符串不能带引号
print(fdict)
gdict = [['a',1],['b',2]]    #向 dict() 函数传入列表或元组,其中元素是包含 2 个元素的列表或元组,其中第一个为键,第二个为值。
print(dict(gdict))
hdict =[(1,2),(3,4),(5,6)]
print(dict(hdict))
idict =((1,2),(3,4),(5,6))
print(dict(idict))
jdict =([1,2],[3,4],[5,6])
print(dict(jdict))
akeys = ['a','b','c']   #通过dict() 函数和 zip() 函数可将前两个列表转换为对应的字典。akeys和avalues还可以是字符串或元组
avalues = [1,2,3]
print(dict(zip(akeys,avalues)))

结果:

{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2}
{1: 2, 3: 4, 5: 6}
{1: 2, 3: 4, 5: 6}
{1: 2, 3: 4, 5: 6}
{'a': 1, 'b': 2, 'c': 3}

注意,无论采用以上哪种方式创建字典,字典中各元素的键都只能是字符串、元组或数字,不能是列表。

====访问字典=====

1.通过键来访问

akeys = ['a','b','c']
avalues = [1,2,3]
adict = dict(zip(akeys,avalues))
print(adict['c'])

结果:

3

2.通过get() 方法获取指定键的值

get() 方法的语法格式为:

dict.get(key[,default])

其中,dict 指的是所创建的字典名称;key 表示指定的键;default 用于指定要查询的键不存在时,此方法返回的默认值,如果不手动指定,会返回 None。

示例:

adict = dict(a=1,b=2,c=3)
print(adict.get('a'))

print(adict.get('d'))   #指定的键不存在,会返回None
print(adict.get('e','No this key'))   #指定的键不存在,但会返回一个提示信息

结果:

1
None
No this key

=====删除字典=====

和删除列表、元组一样,手动删除字典也可以使用 del 语句。

adict = dict(a=1,b=2,c=3)

del(adict)
print(adict)

结果:

NameError: name 'adict' is not defined

====添加键值对====

如果要为 dict 添加键值对,只需为不存在的 key 赋值即可。实现此操作的语法格式如下:

dictname[key] = value

示例 :

adict = {}
adict['a'] = 1
adict['b'] = 2
adict['c'] = 3
print(adict)

结果:

{'a': 1, 'b': 2, 'c': 3}

=====修改键值对========

“修改键值对”并不是同时修改某一键值对的键和值,而只是修改某一键值对中的值。

由于在字典中,各元素的键必须是唯一的,因此,如果新添加元素的键与已存在元素的键相同,原来键所对应的值就会被新的值替换掉。例如:

adict = dict(a=1,b=2,c=3)

adict['a'] = 111
print(adict)

结果:

{'a': 111, 'b': 2, 'c': 3}

====删除键值对======

如果要删除字典中的键值对,还是可以使用 del 语句。例如:

adict = dict(a=1,b=2,c=3)

del adict['c']
print(adict)

结果:

{'a': 1, 'b': 2}

====判断键值对是否存在======

如果要判断字典中是否存在指定键值对,首先应判断字典中是否有对应的键。判断字典是否包含指定键值对的键,可以使用 in 或 not in 运算符。对于 dict 而言,in 或 not in 运算符都是基于 key 来判断的。

adict = dict(a=1,b=2,c=3)

print('a' in adict)
print('a' not in adict)

结果:

True
False

====键值对操作方法======

1.keys()、values() 和 items()方法

这 3 个方法之所以放在一起介绍,是因为它们都用来获取字典中的特定数据。keys() 方法用于返回字典中的所有键;values() 方法用于返回字典中所有键对应的值;items() 用于返回字典中所有的键值对。

adict = dict(a=1,b=2,c=3)

print(adict.keys())
print(adict.values())
print(adict.items())

结果:

dict_keys(['a', 'b', 'c'])
dict_values([1, 2, 3])
dict_items([('a', 1), ('b', 2), ('c', 3)])

注意:在 Python 2.x 中,这三个方法的返回值是列表类型。但在 Python 3 中,并不是列表和元组类型,因为 Python 3不希望用户直接操作这几个方法的返回值。如果想使用返回的数据,有以下 2 种方法:

(1)使用 list() 函数,将它们返回的数据转换成列表,例如:

adict = dict(a=1,b=2,c=3)

print(list(adict.keys()))
print(list(adict.values()))
print(list(adict.items()))

结果:

['a', 'b', 'c']
[1, 2, 3]
[('a', 1), ('b', 2), ('c', 3)]

(2)利用多重赋值的技巧,利用循环结构将键或值分别赋给不同的变量,例如:

adict = dict(a=1,b=2,c=3)
for i in adict.keys():
    print(i,end= ' ')
print()
for j in adict.values():
    print(j,end=' ')
print()
for k,v in adict.items():
    print("key:%s"% k,"value:%s"% v)

结果:

a b c 
1 2 3 
key:a value:1
key:b value:2
key:c value:3

2.copy()方法

copy() 方法用于返回一个具有相同键值对的新字典,例如:

adict = dict(a=1,b=2,c=3)

cdict = adict.copy()
print(cdict)

结果:

{'a': 1, 'b': 2, 'c': 3}

注意,copy() 方法所遵循的拷贝原理,既有深拷贝,也有浅拷贝。拿拷贝字典 a 为例,copy() 方法只会对最表层的键值对进行深拷贝,也就是说,它会再申请一块内存用来存放 {'one': 1, 'two': 2, 'three': []};而对于某些列表类型的值来说,此方法对其做的是浅拷贝,也就是说,b 中的 [1,2,3] 的值不是自己独有,而是和 a 共有。

a = {'a':1,'b':2,'c':[1,2,3]}
b = a.copy()
a['a'] = 111
print(a)
print(b)
a['d'] = 4
print(a)
print(b)
a['c'].remove(1)
print(a)
print(b)

结果:

{'a': 111, 'b': 2, 'c': [1, 2, 3]}
{'a': 1, 'b': 2, 'c': [1, 2, 3]}
{'a': 111, 'b': 2, 'c': [1, 2, 3], 'd': 4}
{'a': 1, 'b': 2, 'c': [1, 2, 3]}
{'a': 111, 'b': 2, 'c': [2, 3], 'd': 4}
{'a': 1, 'b': 2, 'c': [2, 3]}

从运行结果不难看出,对 a 增加新键值对,b 不变;而修改 a 某键值对中列表内的元素,b也会相应改变。

3.update()方法

在执行 update() 方法时,如果被更新的字典中己包含对应的键值对,那么原 value 会被覆盖;如果被更新的字典中不包含对应的键值对,则该键值对被添加进去。

a = {'a':1,'b':2,'c':[1,2,3]}
a.update({'a':111,'b':222,'e':444})
print(a)

结果:

{'a': 111, 'b': 222, 'c': [1, 2, 3], 'e': 444}

4.pop()方法

pop() 方法用于获取指定 key 对应的 value,并删除这个键值对。

a = {'a':1,'b':2,'c':[1,2,3]}

a.pop('a')
print(a)

结果:

{'b': 222, 'c': [1, 2, 3]}

5.popitem()方法

popitem() 方法用于随机弹出字典中的一个键值对。

注意,此处的随机其实是假的,它和 list.pop() 方法一样,也是弹出字典中最后一个键值对。但由于字典存储键值对的顺序是不可知的,因此 popitem() 方法总是弹出底层存储的最后一个键值对。

a = {'a':1,'b':2,'c':[1,2,3]}
print(a)
k,v = a.popitem()   #将弹出项的key赋值给k、value赋值给v
print(k,v)

结果:

{'a': 1, 'b': 2, 'c': [1, 2, 3]}
c [1, 2, 3]

6.setdefault()方法

setdefault() 方法总能返回指定 key 对应的 value;如果该键值对存在,则直接返回该 key 对应的 value;如果该键值对不存在,则先为该 key 设置默认的 value,然后再返回该 key 对应的 value。

a = {'a':1,'b':2,'c':[1,2,3]}
print(a)
print(a.setdefault('a',444))  #键存在,则不会修改value
print(a.setdefault('e',444))  #键不存在,则新增键值对
print(a)

结果:

{'a': 1, 'b': 2, 'c': [1, 2, 3]}
1
444
{'a': 1, 'b': 2, 'c': [1, 2, 3], 'e': 444}

====使用字典格式化字符串=======

temp = 'name:%(name)s,price:%(price)d,'
book = {'name':'python','price':120}
print(temp % book)

结果:

name:python,price:120

Python字典dict相关推荐

  1. python字典(dict)+常用方法操作+列表、元组、集合、字典的互相转换

    python字典(dict)+常用方法操作+列表.元组.集合.字典的互相转换 字典也是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据. 为了保存具有映射关系的数据,Python ...

  2. Python 字典 dict() 函数

    描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...

  3. Python 字典(dict) clear() 方法

    字典(dict)是 Python 提供的一种常用的数据结构,它用于存放具有映射关系的数据.Python字典可存储任意类型对象,如字符串.数字.元组等,优点是取值方便,速度快.本文主要介绍Python ...

  4. Python 字典 dict 以及collections里面的defaultdict

    Python dict 字典 作用与 java.c语言里的map类似. 可以使用dict方法定义一个字典,也可以使用花括号直接定义. map = {} map = dict() python字典的插入 ...

  5. [Python]字典dict简介

    文章目录 字典dict 字典操作 字典遍历 遍历key 遍历value 同时遍历key与value 操作函数 内置函数 内置方法 字典是一种可变容器,可存储任意类型的键值对. 字典dict pytho ...

  6. Python字典(dict)详解

    文章目录: 一.字典(dict)的概念: 二.字典(dict)的定义: 1.一般格式: 2.空字典: 3.举例: 注意: 三.字典(dict)的一些基本操作: 1.增: 2.删: 3.查: 4.改: ...

  7. Python 字典dict详解(超详细)

    文章目录 Python内置函数/方法详解-字典dict 1.创建字典 1.1 字典键的特性 2.访问字典值 2.1 直接访问 2.2 for循环遍历 2.3 检查键是否存在 2.4 嵌套字典 3.内置 ...

  8. python字典dict与json数据转换

    JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式.现在的接口请求request params和response body,大都是使用json格 ...

  9. Python字典dict的增删查改及常用操作

    字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...

最新文章

  1. Clang:LLVM 的 C 语言家族前端
  2. php 文件迭代对象,通过PHP中的stdClass对象进行迭代
  3. 【五校联考3day2】A
  4. MCtalk对话学霸君:在线教育“1对多小班化”是个伪命题
  5. java怎么显示qt文件后缀,在qt中执行java文件
  6. 傅里叶变换公式_理解1维傅里叶变换
  7. 1218数据库操作工具类的使用
  8. L1-004. 计算摄氏温度-PAT团体程序设计天梯赛GPLT
  9. python单词字典排序_python字典排序
  10. Python单元测试框架——unittest
  11. 用策略屏蔽135 139 445 3389端口+网络端口安全防护技 .
  12. 蓝桥杯 题目1 最大最小值(排序)
  13. pyqt5——QImage与QPixmap
  14. 开启灯光就是近光吗_自动大灯会自动调远近光吗
  15. 如何制定有效的项目管理计划?
  16. html excel 2位小数,excel保留两位小数_excel用公式保留2位小数的方法
  17. S5PV210 buzzer驱动
  18. 第一次将所学的指针和递归结合在一起
  19. 微信小程序的测试方法,抓包,模拟
  20. 高德地图API实现天气查询

热门文章

  1. 019、冻结TXID
  2. 一个非常好用的文件解锁工具
  3. 盘点Galaxy S6 edge+几个趣味功能
  4. 怎样将CAD图纸转换成Word?这个方法手机也能用
  5. javamail实现用普通QQ邮箱发送邮件
  6. 五虎遁月 和 五鼠遁时 法
  7. 《龙仇》V1.0安卓版
  8. 产品运营要怎么进行用户拉新?
  9. 工作996,没时间提升自己怎么办?
  10. sqlserver字符串截取