【python学习笔记】python字典(dict)

1、字典dict的创建

Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。注意字典内各个部分是没有顺序的区别的
其java的map是一样的,属于key:value模式,一个简单的例子如下:

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

或者直接通过构造函数dict()来直接创建字典:

>>> dict([('sape',4321),('guido',3253),('jack',3235)])
{'sape': 4321, 'jack': 3235, 'guido': 3253}
>>> dict(sap=2232,guido=1123,jack=8325)
{'sap': 2232, 'jack': 8325, 'guido': 1123}

或者通过字典推导式:

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

注意
每个键与值用冒号隔开(:),每对用逗号,每对用逗号分割,整体放在花括号中({})。
键必须独一无二,但值则不必。
值可以取任何数据类型,但必须是不可变的,如字符串,数组或元组。

2、获取某个key对应的value

获取key对应的value可以用最简单的:

>>> d={'Michael':95,'Bob':82,'Tracy':94}
>>> d['Michael']
95

也可以用get方法

>>> d.get("Bob")
92

如果要找的keydict中不存在,那么用d[key]的方式会报错,如下:

>>> d={'Michael':95,'Bob':82,'Tracy':94}
>>> d['a']

Traceback (most recent call last):
  File "<pyshell#99>", line 1, in <module>
    d['a']
KeyError: 'a'

如果是用get方法则会返回None(在交互式界面看起来是没返回的样子)

>>> d={'Michael':95,'Bob':82,'Tracy':94}
>>> d.get('Thomas')

如果用get(key, return)方式,则如果key在字典不存在则返回return,如果存在则返回其value,例如:

>>> d={'Michael':95,'Bob':82,'Tracy':94}
>>> d.get('Thomas',-1)
-1
>>> d.get('Bob',-1)
92

3、修改某个key的value

要修改其中一个值则可以用如下方式直接修改:

>>> d={'Michael':95,'Bob':82,'Tracy':94}
>>> d['Michael']
95
>>> d['Bob']=92
>>> d
{'Bob': 92, 'Michael': 95, 'Tracy': 94}

4、新增

要新增则使用方法setdefault(key,value),范例如下:

>>> d={'Michael':95,'Bob':92,'Tracy':94}
>>> d.setdefault('susan',2034)
2034
>>> d
{'Bob': 92, 'Michael': 95, 'Tracy': 94, 'susan': 2034}

5、删除字典元素

(1)删除某个元素:

>>> d={'Bob':92,'Michael':95,'Tracy':94,'susan':2034}
>>> d.pop("susan")
2034
>>> d
{'Bob': 92, 'Michael': 95, 'Tracy': 94}

或者

>>> d={'Michael':95,'Tracy':94}
>>> del d['Tracy']
>>> d
{'Michael': 95}

(2)随机删除一个元素:

>>> d={'Bob':92,'Michael':95,'Tracy':94}
>>> d.popitem()
('Bob', 92)
>>> d
{'Michael': 95, 'Tracy': 94}

(3)删除字典

>>> d={'Michael':95}
>>> d.clear()
>>> d
{}

5、判断是否存在一个key

如果我们想判断dict中是否有某个key,可以用in来判断,方法如下所示:

>>> d={'Michael':95,'Bob':92,'Tracy':94}
>>> 'Thomas' in d
False
>>> 'Bob' in d
True

6、其他

(1)计算字典元素可数,即key的总数

>>> dict1={'Name':'Zara','Age':9,'Class':'First'}
>>> len(dict1)
3

(2)转换为字符串

这里相当于java将一个map转化为json字符串

>>> dict1={'Name':'Zara','Age':9,'Class':'First'}
>>> str(dict1)
"{'Age': 9, 'Name': 'Zara', 'Class': 'First'}"

(3)获取其类型

在这里输入是个字典,so

>>> dict1={'Name':'Zara','Age':9,'Class':'First'}
>>> type(dict1)
<type 'dict'>

(4)输出一个list

输出一个list格式(非真正意义上的list)

>>> dict1={'Name':'Zara','Age':9,'Class':'First'}
>>> print(dict1.items())
[('Age', 9), ('Name', 'Zara'), ('Class', 'First')]
>>> print(list(dict1.items()))
[('Age', 9), ('Name', 'Zara'), ('Class', 'First')]

6、小节

和list比较,dict有以下几个特点:

  • 查找和插入的速度极快,不会随着key的增加而变慢;
  • 需要占用大量的内存,内存浪费多。

而list相反:

  • 查找和插入的时间随着元素的增加而增加;
  • 占用空间小,浪费内存很少。

https://www.cnblogs.com/liuchunxiao83/p/5362541.html
http://www.runoob.com/manual/pythontutorial/docs/html/datastructures.html#tut-sets
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143167793538255adf33371774853a0ef943280573f4d000

猜你喜欢

转载自blog.csdn.net/df0128/article/details/83900262
今日推荐