美文网首页
字典和集合

字典和集合

作者: 淡是养心药 | 来源:发表于2019-02-04 15:27 被阅读7次

下面我们讨论Python基本数据类型中的字典和集合。

6.1 字典

我们都使用过汉语字典,它的原理是对汉语中的每个字,都给出对应的释义并组词、造句。与汉语字典相似,在Python中也提供了字典这一数据类型。它是一个复合类型,即,它可以包含多个元素。但与列表和元组不同的是,它不以下标对元素进行索引,而是将元素组织成一个个键-值对,以键作为下标,索引字典中的元素,其中的键是互不相同的不可变值( 不可变值的概念第7章将进行讨论 )。字典的用法如下:

>>> d={"father": "Jack",   # 逗号分隔字典的元素
       "mother": "Jane",    # 冒号以 "键:值" 的形式组织元素,一个键-值对是一个元素
       "son"   : "Henry"}   # 键是互不相同的不可变值
>>> d["son"]              # 通过键对元素进行索引
"Henry"

d.keys() 方法返回字典的键列表,如: 在for循环中使用字典

for key in d.keys():
  do sth. with d[key]

字典中的元素并不一定按照我们创建时的顺序排列,而是由Python自行决定如何排列,使用时不能假定键存在某个顺序,但有时我们需要按键的一定顺序对字典元素进行访问,我们可以这样做:

for key in sorted(d.key()):  # 按字母顺序排列键,
                             # 对上例中的字典,就是
  do sth. with d[key]  # ['father','mother','son']的顺序
# reverse=True表示逆序排列,reverse是逆序的意思
for key in sorted(d.key(), reverse=True)  
  do sth. with d[key] # keys按 ['son', 'mother',
                      # 'father'] 的顺序排列

我们可以使用工厂函数创建一个空字典:

工厂函数可以简单地理解成前面讲过的类的初始化函数__init__(),当我们直接用类名作为函数名进行调用时,实际上调用的就是该类的__init__()函数。它的作用是像工厂生产产品一样生产该类的一个个对象。比如:

d=dict()  # dict()是字典类的工厂函数,此处生成了一个空字典

生成空字典后,如何向字典中添加元素呢? 我们不需要像列表的l.append()函数一样的方法,而只需进行赋值操作即可,比如:

>>> d=dict()
>>> d["father"]="Jack"
>>> d["mother"]="Jane"
>>> d["son"]="Henry"
>>> d
{'father': 'Jack', 'mother': 'Jane', 'son': 'Henry'}

字典的作用是根据键的值快速访问对应的元素,就像一本几十万字的字典,掌握了使用它的方法之后,查阅一个字的释义就很快捷了。

那么,怎么删除字典的元素呢? 答案如下:

>>> d.clear()   # 清除字典中的所有元素
>>> d.pop("father")  # 删除其中一个元素,提供键即可

6.2 集合

有时,我们需要一个容器,要求其中的元素都是唯一的,集合提供了这个功能。集合中的元素是互不相同的不可变值,这个要求与字典中的键相同。

要使用集合,可以用工厂函数先创建一个空集合

>>> some_set=set()

然后向该集合中添加元素:

>>> some_set.add("father")
>>> some_set.add("mother")
>>> some_set.add("son")
>>> some_set
{'father', 'son', 'mother'}

也可以用赋值的方法创建一个集合:

>>> some_set={"father", "mother", "son"}

删除元素,可以使用remove()方法:

>>> some_set.remove("father")
>>> some_set
{"mother", "son"}

6.3 综合例子: 统计英语文章中的词频

f=open("article.txt",'r')
wordlist=[]
for line in f.readlines():
    wordsOfLine=line.split()
    wordlist+=wordsOfLine     # 用全部文本生成一个单词列表
wordsSet=set(wordlist) # 利用wordlist构造一个集合,
                       # 去除其中的重复元素
wordCount=dict()
for word in wordsSet:
    wordCount[word]=wordlist.count(word)

for wc in sorted(wordCount.items(),
                 key=lambda item: item[1], 
                 reverse=True): # 对wordCount按词频排序
    print("%s: %d" % wc)  # wc是一个二元组(word, count)

相关文章

  • 2. 字典和集合

    字典和集合相比于列表和元组,字典和集合的性能更优:主要体现在查找、增加和删除操作; 1. 字典和集合基础 字典是一...

  • 6 字典和集合——《Swift3.0从入门到出家》原创连载

    6 字典和集合——《Swift3.0从入门到出家》 字典和集合 字典 字典是集合类型存放多个键值对,其中键是唯一的...

  • Python字典和集合

    字典和集合的定义 字典:字典是由一系列键(key)和值(value)配对组成的元素的集合集合:和字典基本相同,唯一...

  • 【第11天】python全栈从入门到放弃

    1.字典和集合 集合是没有values的字典,集合和字典的key都必须不可变且可哈希 2. range和rando...

  • 走进 Typescript 数据结构(字典)

    集合、字典和散列表可以存储不重复的值。字典和集合相似,集合以[值,值]的形式存储元素,字典是以[键,值]的形式来存...

  • 字典和集合

    dict : key:不可变(可哈希)的数据类型 value:任意数据类型,对象。 大量的数据,关系型数据。查...

  • 字典和集合

    下面我们讨论Python基本数据类型中的字典和集合。 6.1 字典 我们都使用过汉语字典,它的原理是对汉语中的每个...

  • 字典和集合

    参考《Fluent Python》字典和集合 集合的本质是唯一元素的聚集,所以集合可以用来去重 集合也支持一些基础...

  • #抬抬小手学Python# 说完列表说字典,说完字典说集合

    字典与集合那些事儿 字典和集合为何总要放在一起,说来也巧,就是因为它们都用大括号 {} 包裹。 字典和集合那些基础...

  • 《算法与数据结构 C语言描述》第六章 集合与字典

    集合与字典是两种常用的数据结构,应用非常广泛字典是关联的集合。集合主要考虑集合之间的并、交和差操作,字典主要关心其...

网友评论

      本文标题:字典和集合

      本文链接:https://www.haomeiwen.com/subject/vqipsqtx.html