本篇文章给大家带来的内容是关于python字典的操作总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
字典(dict)结构是python中常用的数据结构,笔者结合自己的实际使用经验,对字典方面的相关知识做个小结,希望能对读者一些启发~
创建字典常见的字典创建方法就是先建立一个空字典,然后逐一添加键(key)和值(value),比如创建字典person={'name':'tome', 'age':22, 'city':'shanghai, 'id': '073569'},可以使用以下代码:
person = {}person['name'] = 'tom'person['age'] = 22person['city'] = 'shanghai'person['id'] = '073569'print(person)
输出结果为:
{'name': 'tom', 'age': 22, 'city': 'shanghai', 'id': '073569'}
这样的创建方式简单原始,代码不够简洁优雅。我们用zip函数,来简单快捷地创建这个字典:
attrs = ['name', 'age', 'city', 'id']values = ['tom', 22, 'shanghai', '073569']person = dict(zip(attrs, values))print(person)
输出结果与原先代码一致。
遍历字典在实际应用中,我们常常需要遍历字典,实现的方法可参考以下代码:
attrs = ['name', 'age', 'city', 'id']values = ['tom', 22, 'shanghai', '073569']person = dict(zip(attrs, values))for key, value in person.items(): print('key:%-6s, value:%s'%(key, value))
输出结果为:
key:name , value:tomkey:age , value:22key:city , value:shanghaikey:id , value:073569
对调键值对在实际应用中,有时候我们需要查找字典中某个值(value)对应的键(key),遍历字典是一种选择,对调键值对是另一种选择。对调键值对的实现代码如下:
attrs = ['name', 'age', 'city', 'id']values = ['tom', 22, 'shanghai', '073569']person = dict(zip(attrs, values))print('对调前:')print(person)person = {v:k for k,v in person.items()}print('对调后:')print(person)
输出结果为:
对调前:{'name': 'tom', 'age': 22, 'city': 'shanghai', 'id': '073569'}对调后:{'tom': 'name', 22: 'age', 'shanghai': 'city', '073569': 'id'}
有序字典ordereddictpython中的字典是无序的,其取出来的键是无序的,因为它是按照hash来储存的。有时候,我们需要字典的条目(items)或键(keys)是有序储存的,这时候可以使用collections模块中的ordereddict,它是一种有序的字典结构。
示例代码如下(python版本为3.5.2):
from collections import ordereddictd = {}d['tom']='a'd['jack']='b'd['leo']='c'd['alex']='d'print('无序字典(dict):')for k,v in d.items(): print(k,v)d1 = ordereddict()d1['tom']='a'd1['jack']='b'd1['leo']='c'd1['alex']='d'print('\n有序字典(ordereddict):')for k,v in d1.items(): print(k,v)
输出的结果为:
无序字典(dict):leo cjack btom aalex d有序字典(ordereddict):tom ajack bleo calex d
默认字典collections.defaultdict collections.defaultdict是python内建dict类的一个子类,第一个参数为default_factory属性提供初始值,默认为none。它覆盖一个方法并添加一个可写实例变量。它的其他功能与dict相同,但会为一个不存在的键提供默认值,从而避免keyerror异常。
我们以统计列表中单词的词频为例,展示collections.defaultdict的优势。
一般情形下,我们统计列表中的单词词频代码为:
words = ['sun', 'moon', 'star', 'star',\ 'star', 'moon', 'sun', 'star']freq_dict = {}for word in words: if word not in freq_dict.keys(): freq_dict[word] = 1 else: freq_dict[word] += 1for key, val in freq_dict.items(): print(key, val)
输出结果如下:
sun 2moon 2star 4
使用collections.defaultdict,代码可以优化:
from collections import defaultdictwords = ['sun', 'moon', 'star', 'star',\ 'star', 'moon', 'sun', 'star']freq_dict = defaultdict(int)for word in words: freq_dict[word] += 1for key, val in freq_dict.items(): print(key, val)
其它默认初始值可以为set,list,dict等。
以上就是python字典的操作总结(附示例)的详细内容。