Python Crash Course读书笔记 - 第6章:DICTIONARIES

Python中的字典(dictionary)就是一组键值对(key:value pair)的集合。类似于其它语言中的Map或lookup table。
key必须是字符串,value可以是任何对象。
key和value都可以使用变量。

简单字典

student = {'name': 'tony', 'age': 14}

print(student ['name'])
print(student ['age'])

使用字典

字典包含在{}之间,成员(键值对)间用,分隔。通过键(key)可以访问成员的值(value)。
空字典如下定义:

student = {}

为字典增加成员直接赋值即可,如果key已存在则相当于更新:

>>> student = {'name': 'tony', 'age': 14}
>>> student['grade']=7
>>> print(student)
{'grade': 7, 'age': 14, 'name': 'tony'}
>>> student['age']=15
>>> print(student)
{'grade': 7, 'age': 15, 'name': 'tony'}
>>> student['age'] += 1
>>> print(student)
{'grade': 7, 'age': 16, 'name': 'tony'}

删除成员使用del,这和List一样:

>>> del student['age']
>>> print(student)
{'grade': 7, 'name': 'tony'}

一种美观的写法:

>>> student = {
... 'name':'tony',
... 'age':14
... }

如果key不存在,访问其中的值会报错:

>>> student['gender']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'gender'

这是需要使用get()方法,第一个参数是key,第二个参数是可选的,当key未赋值时,返回此值:

>>> student.get('gender', 'No value assigned')
'No value assigned'

如果key未赋值,并且get方法未指定第二个参数时,返回None,相当于SQL中的Null:

>>> ret = student.get('gender')
>>> ret
>>> print(ret)
None

当然,None也可以直接作为value:

>>> a={'a':None,'b':None}
>>> print(a.get('a'))
None

遍历字典

采用如下形式:

for k, v in dictionary.items()

示例:

$ cat months.py
months = {'jan':1, 'feb':2, 'march':3, 'apr':4}

for k,v in months.items():
    print(f"key is {k.upper()}, value is {v}")

print()

for k in months.keys():
    print(f"key is {k.upper()}")

print()

for v in months.values():
    print(f"value is {v}")

    
$ python3 months.py
key is JAN, value is 1
key is FEB, value is 2
key is MARCH, value is 3
key is APR, value is 4

key is JAN
key is FEB
key is MARCH
key is APR

value is 1
value is 2
value is 3
value is 4

如果要以一定顺序访问字典中的key,可以使用sorted函数:

for k in sorted(dictionary.keys()):
...

字典中的key当然是唯一的,但value有可能充分,我们可以通过set函数去除重复值:

>>> ages = {'tony':14, 'tom':14, 'ivan':15}
>>> ages.values()
dict_values([14, 14, 15])
>>> set(ages.values())
{14, 15}

set可以认为是具有唯一值的List,其定义与dictionary很相似,也是用{},当成员不是key:value,而是单个的值。

>>> colors = {'red', 'blue', 'yellow', 'red'}
>>> colors
{'yellow', 'blue', 'red'}

嵌套

首先,嵌套是指字典可作为List的成员。

$ cat students.py
students = []

for i in range(4):
    students.append({'no':i, 'name':'student' + f"{i}"})
print(students)

print()

for student in students[1:3]:
    print(student)
    
$ python3 students.py
[{'no': 0, 'name': 'student0'}, {'no': 1, 'name': 'student1'}, {'no': 2, 'name': 'student2'}, {'no': 3, 'name': 'student3'}]

{'no': 1, 'name': 'student1'}
{'no': 2, 'name': 'student2'}

其次,嵌套指字典的成员可以是List。

>>> student = {'name':'tony', 'friends':['flora', 'amy']}

最后,嵌套还可以指字典中可包含字典,也就是字典可以作为字典成员中的value。

>>> student = {'first':'vivian', 'last':'liu', 'age':14}
>>> students = {'vivian_liu':student}
>>> print(students)
{'vivian_liu': {'first': 'vivian', 'last': 'liu', 'age': 14}}
发布了352 篇原创文章 · 获赞 42 · 访问量 55万+

猜你喜欢

转载自blog.csdn.net/stevensxiao/article/details/103993139