字典(dict)结构是Python中常用的数据结构,笔者结合自己的实际使用经验,对字典方面的相关知识做个小结,希望能对读者一些启发~
<>强创建字典强>
常见的字典创建方法就是先建立一个空字典,然后逐一添加键(键)和值(值),比如创建字典人={“名称”:“本”,“年龄”:22岁的“城市”:”上海,“ID”:“073569”},可以使用以下代码:
人={} 人['名字']=滥贰? 人(“年龄”)=22 人(“城市”)='上海' 人(“ID”)=' 073569 ' 打印(人) >之前输出结果为:
{“名称”:“汤姆”,“年龄”:22岁的“城市”:“上海”,“ID”:“073569年}
引用>
这样的创建方式简单原始,代码不够简洁优雅。我们用zip函数,来简单快捷地创建这个字典:
attrs=[“名称”,“年龄”、“城市”,“ID”) 值=[‘汤姆’,22日,“上海”,“073569”) 人=dict (zip (attrs,值)) 打印(人) >之前输出结果与原先代码一致。
<>强遍历字典强>
在实际应用中,我们常常需要遍历字典,实现的方法可参考以下代码:
attrs=[“名称”,“年龄”、“城市”,“ID”) 值=[‘汤姆’,22日,“上海”,“073569”) 人=dict (zip (attrs,值)) 关键,价值person.items (): print(关键:% 6年代,价值:% s的%(键值)) >之前输出结果为:
键:name 价值:汤姆。
引用>
关键:age ,价值:22日
关键:city 价值:上海
关键:ID ,,价值:073569
<强>对调键值对强>
在实际应用中,有时候我们需要查找字典中某个值(值)对应的键(关键),遍历字典是一种选择,对调键值对是另一种选择。对调键值对的实现代码如下:
attrs=[“名称”,“年龄”、“城市”,“ID”) 值=[‘汤姆’,22日,“上海”,“073569”) 人=dict (zip (attrs,值)) 打印(“对调前:') 打印(人) 人={v: k, k, v在person.items ()} 打印(“对调后:') 打印(人) >之前输出结果为:
对调前:
引用>
{“名称”:“汤姆”,“年龄”:22岁的“城市”:“上海”,“ID”:“073569年}
对调后:
{“汤姆”:“名字”,22日:“年龄”,“上海”:“城市”,“073569”:“ID”}
<强>有序字典OrderedDict 强>
Python中的字典是无序的,其取出来的键是无序的,因为它是按照散列来储存的。有时候,我们需要字典的条目(项目)或键(键)是有序储存的,这时候可以使用集合模块中的OrderedDict,它是一种有序的字典结构。
示例代码如下(Python版本为3.5.2):
从进口OrderedDict集合 d={} d[‘汤姆’]=' A ' d(‘杰克’)=' B ' d(“狮子座”)=' C ' d(“亚历克斯”)=' d ' 打印(“无序字典(dict):”) k、v d.items (): 打印(k、v) d1=OrderedDict () d1[‘汤姆’]=' A ' d1(‘杰克’)=' B ' d1(“狮子座”)=' C ' d1(“亚历克斯”)=' D ' 打印(' \ n有序字典(OrderedDict): ') k、v d1.items (): 打印(k、v)输出的结果为:
无序字典(dict):
狮子座C
杰克B
汤姆一个
亚历克斯·D有序字典(OrderedDict):
引用>
汤姆一个
杰克B
狮子座C
亚历克斯·D
<强>默认字典collections.defaultdict 强>
collections.defaultdict是Python内建dict类的一个子类,第一个参数为default_factory属性提供初始值,默认为没有。它覆盖一个方法并添加一个可写实例变量。它的其他功能与dict相同,但会为一个不存在的键提供默认值,从而避免KeyError异常。
我们以统计列表中单词的词频为例,展示collections.defaultdict的优势。
一般情形下,我们统计列表中的单词词频代码为:
Python详解字典小结