字典是最与php的数组相似的序列结构。python的列表只能是以索引数字开头并且顺序递增的序列。字典则可以是以字母为key的序列。
元组一般用圆括号来表示,如(1,2,3)
列表一般用方括号来表示,如[1,2,3]
而字典(dict)则用大括号来表示,如{‘a’:1,’b':2,’c':3}
与php不同,php的key,value是用key=>value来表示,python而是用冒号“:”来分隔。
字典可以使用大括号书写键和值或使用dict函数来创建。
dict函数可以指定两个元组或列表来对应创建字典。如:
items = [('name','gumby'),('age','42')]
d = dict(items)
与列表的区别:
k in d(d为字典),查找的是键,而非value,表达式 v in l(l为列表)则用来查找值,而不是索引。
一些字典方法:
clear 清除字典。“原地操作”,不会返回值,类似于列表的sort方法
copy方法返回一个相同键值对儿的新字典。浅复制。因为值本身就是相同的,而不是副本。
在副本中替换值的时候,原始字典不受影响。但是如果修改了某个值,原始字典也会改变。避免这个问题的一种方法就是使用深度复制(deep copy)。
from copy import deepcopy
deepcopy(d)
d.fromkes方法使用给定的值创建新字典。每个键默认对应的是None
get方法获取一个不存在的键时,不会报错,会返回None
has_key方法相法于表达式k in d
items方法将所有的字母项以列表的方式返回。这些列表中的每一项都来自于(键,值)。但是项在返回时没有特殊的顺序。
iteritmes的方法大致相同,但是会返回一个迭代器对象而不是列表。在很多情况下iteritems效率更高。迭代器,相当于decode json之后的对象,而非数组、
keys方法将字典中的键以列表的形式返回。而iterkeys则返回针对键的迭代器。
pop弹出给定键的值。popitem会弹出最后一个元素(实际上是随机项),但如果想一个接一个地移除并处理字典,popitem效率就会高很多,因为不必先获取字典的键值列表。
values和itervalues方法以列表或迭代器的形式返回字典中的值,返回值的列表可以包含重复项。
看些python 字典操作实例
假设字典为dics = {0:'a', 1:'b', 'c':3}
1.从字典中取值,当键不存在时不想处理异常
[方法] dics.get('key', 'not found')
[例如]
[解释] 当键'key'不存在是,打印'not found'(即想要处理的信息),当存在是输出键值。
【其他解决方案一】
if key in dics: print dics[key] else: print 'not found!!'
【其他解决方案二】
try: print dics[key] except KeyError: print 'not found'
例子:
2.从字典中取值,若找到则删除;当键不存在时不想处理异常
[方法] dics.pop('key', 'not found')
[例如]
[解释] 当键'key'不存在是,打印'not found'(即想要处理的信息),当存在是输出键值,并且去除该健。
3.给字典添加一个条目。如果不存在,就指定特定的值;若存在,就算了。
[方法] dic.setdefault(key, default)
[例如]
python 字典排序
dic = {'a':3 , 'b':2 , 'c': 1}
注意
排序之后原字典没有变,顺序依旧
两个函数
1.lambda
功能: 创建匿名函数
区别: 和def函数定义,以下两点区别
- lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符;而def则会把函数对象赋值给一个变量
- lambda它只是一个表达式,而def则是一个语句
案例:
2.iteritems()
功能: iteritems()以迭代器对象返回字典键值对
区别: 和item相比:items以列表形式返回字典键值对
案例:
注释: 在函数sorted(dic.iteritems(), key = lambda asd:asd[1])中,第一个参数传给第二个参数“键-键值”,第二个参数取出其中的键([0])或键值(1])
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数组
, 对象
, 函数
, 排序
, 表达式
括号
,以便于您获取更多的相关知识。