~欢迎进来我的博客~蛋叔的小乖乖~

父与子的编程--字典

本章总结:

1创建字典

2添加条目

3查找(键的值、键的存在)

4列表和字典的异同

5排序(对键排序、对值排序)

6删除(删除某一个键、删除所有)

 

字典概念:Python 字典(dictionary)是一种将两个东西关联在一起的方式。被关联在一起的两个东西分别称为键(key)和值(value)。字典中的每个项(item)或条目(entry)都有一个键和一个值,它们合起来被称为键值对(key-value pair)。一个字典就是一些键值对的集合。

一、创建
1.创建一个空的字典:
>>> phoneNumbers = {}

2.来添加一个条目:
>>> phoneNumbers["John"] = "555-1234"
如果我们打印一下字典,它看起来是这样的:
>>> print phoneNumbers
{'John': '555-1234'}

 

 

显示键,然后是一个冒号,再接着显示值。之所以用引号,是因为在这个例子中键和值刚好都是字符串(不是必需的)。

另一种方式来完成:
>>> phoneNumbers = {"John": "555-1234"}

 

  

来添加更多的条目。不像在列表中可以使用append(),在字典中则没有用于添加新条目的方法。只需要指定新的键和值就行了:

>>> phoneNumbers["Mary"] = "555-6789"
>>> phoneNumbers["Bob"] = "444-4321"
>>> phoneNumbers["Jenny"] = "867-5309"

来看一下整个字典:
>>> print phoneNumbers
{'Bob': '444-4321', 'John': '555-1234', 'Mary': '555-6789', 'Jenny': '867-5309'}

 

3.查找

之所以创建字典,是因为我们可以在字典中查找东西。在这个例子中,我们希望按姓名来查找电话号码。你可以这样做:

>>> print phoneNumbers["Mary"]
'555-6789'

 

 

 三、列表和字典的异同

字典和列表有点类似,但也有一些主要区别。这两种类型都称为“集合”(collection),也就是说,它们都是将其他类型条目集中在一起的组织方式。

相似点:

ˆˆ 列表和字典都可以包含任意类型(甚至包括列表和字典)的条目,所以你可以有一个包含数字、字符串、对象甚至其他集合的集合。
ˆˆ列表和字典都提供了在集合中查找条目的方法。
不同点:
ˆˆ列表是有顺序的(ordered)。如果你按照某种顺序向列表中添加元素,这些元素就会保持这种顺序。你还可以对列表进行排序。字典是无序的(unordered)。如果你向字典中添加内容,然后打印出来,显示的顺序可能会跟添加的顺序不同。
ˆˆ列表中的元素是使用索引访问的,而字典中的条目是使用键来访问的:
 
>>> print myList[3]
'eggs'
>>> print myDictionary["John"]
'555-1234'

在Python 中很多东西都是对象,列表和字典也是。所以列表和字典都有一些使用点号表示法来使用的方法。

keys() 方法会列出字典中所有的键:
>>> phoneNumbers.keys()
['Bob', 'John', 'Mary', 'Jenny']
values() 方法会列出字典中所有的值:
>>> phoneNumbers.values()
['444-4321', '555-1234', '555-6789', '867-5309']

 

 其他的语言也有与Python 字典类似的东西。它们通常被称为关联数组(associative array),因为它们将键和值关联在一起。你可能也会听说它们的另外一个名字—哈希表(hash table)。

字典中的值是可以使用字典的,而键的要求更为严格一些。早先我们谈论过可变类型(mutable)与不可变类型(immutable)。字典的键只可以使用不可变类型(布尔、整数、浮点数、字符串和元组)。你不能使用一个列表或者字典来当作键,因为它们是可变类型。

 

四、排序

字典是无序的。希望将字典中的内容按照某种顺序显示出来。虽然字典没有顺序,但可以对列表排序,所以当你拿到键的列表后,就可以对键进行排序,然后按照键的顺序显示字典内容。你可以使用sorted() 函数来对字典的键排序,像下面这样:

1.对key的排序

>>> for key in sorted(phoneNumbers.keys()):
     print key, phoneNumbers[key]
Bob 444-4321
Jenny 867-5309
John 555-1234
Mary 555-6789

 

 

 

2.对value的排序

字典的查找过程是单向的,这意味着只能用键去查找值,而不能反过来。所以对值排序会有些困难。但这仍然是可以做到的,只是需要做更多的工作:

>>> for value in sorted(phoneNumbers.values()):
    for key in phoneNumbers.keys():
      if phoneNumbers[key] == value:
        print key, phoneNumbers[key]
Bob 444-4321
John 555-1234
Mary 555-6789
Jenny 867-5309

首先取得排序之后的值的列表,然后针对列表中的每个值,循环遍历字典中的所有键,直到找到与该值关联的键。

 

 

 

五、删除

使用del删除一个条目: 

>>> del phoneNumbers["John"]
>>> print phoneNumbers
{'Bob': '444-4321', 'Mary': '555-6789', 'Jenny': '867-5309'}

 

 

 

使用clear()删除所有条目(清空字典):

>>> phoneNumbers.clear()
>>> print phoneNumbers
{}

 

 

使用in确定某个键在字典中是否存在:

>>> phoneNumbers = {'Bob':'444-4321', 'Mary':'555-6789','Jenny':'867-5309'}
>>> "Bob" in phoneNumbers
True
>>> "Barb" in phoneNumbers
False

 

 

posted @ 2019-12-13 17:17  qq的天马行空  阅读(108)  评论(0)    收藏  举报
蛋叔的小乖乖