Python初级-6字典

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python初级-6字典相关的知识,希望对你有一定的参考价值。

1、字典的基本情况是key:value,这样的一种键-值对模式,并且字典可存储的信息量几乎不受限制。通过访问键,来获取对应的值。键和值之间使用(:)分开。字典是用{}表示的,字典内的元素使用(,)分开。最简单的字典如下:

alien_0 = {‘color‘: ‘green‘, ‘point‘: 5}

这里‘color‘和‘point‘是一个键,‘green‘和5是一个值。

2、为了获取字典中某个键的值,可以直接访问该字典中的键:

>>> alien_0 = {‘color‘: ‘green‘}

>>> print(alien_0[‘color‘])

green

3、添加键值对:

>>> print(alien_0)

{‘color‘: ‘green‘}

>>> alien_0[‘x‘] = 0

>>> alien_0[‘y‘] = 100

>>> print(alien_0)

{‘x‘: 0, ‘y‘: 100, ‘color‘: ‘green‘}

注意了,字典是不关心排列顺序的,也就是说添加顺序和排列顺序是没有关系的。字典只关心键和值之间的关系。

4、使用字典来存储用户提供的数据或者在编写能自动生成大量键-值对的代码时,通常需要先定义一个空字典:

>>> alien_0 = {}

>>> alien_0[‘color‘] = ‘green‘

>>> alien_0[‘points‘] = 5

>>> print(alien_0)

{‘points‘: 5, ‘color‘: ‘green‘}

5、修改字典中的值:

>>> print(alien_0)

{‘points‘: 5, ‘color‘: ‘green‘}

>>> alien_0[‘points‘] = 6

>>> print(alien_0)

{‘points‘: 6, ‘color‘: ‘green‘}

就是把字典中的键对应新的值,就是修改字典中的键中的值。

6、删除键值对:

>>> print(alien_0)

{‘points‘: 6, ‘color‘: ‘green‘}

>>> del alien_0[‘points‘]

>>> print(alien_0)

{‘color‘: ‘green‘}

注意,删除时,减-值对是一起删除的。是永远消失,不是临时性的。

7、对于较长的字典,可以使用Python的缩进配合换行来实现优雅的键入字典的键值对:

>>> languages = {

...     ‘alex‘: ‘python‘,

...     ‘ruifeng‘: ‘c‘,

...     ‘johnny‘: ‘perl‘,

...     }

>>> print(languages)

{‘ruifeng‘: ‘c‘, ‘johnny‘: ‘perl‘, ‘alex‘: ‘python‘}

可以看到,字典中的键-值对都进行了缩进,并且在最后一个键-值对后加入了(,)。对于其它需要输入很长的内容,比如print()函数内需要输入的内容很长,可以在()内换行继续写,新行是需要进行缩进的。

8、遍历键-值对的特殊取法:

>>> print(my_friend_1)

{‘sex‘: ‘male‘, ‘age‘: ‘31‘, ‘city‘: ‘Shanghai‘, ‘name‘: ‘Cao Xiao Jun‘}

>>> for key, value in my_friend_1.items():

...     print("\nkey: " + key)

...     print("value: " + value)

...

key: sex

value: male

key: age

value: 31

key: city

value: Shanghai

key: name

value: Cao Xiao Jun

items()方法用于返回一个键-值对列表。之后分别把键存入key变量,值存入value变量。"\n"表示插入一个回车符号。注意,即使是遍历字典,也是不关注顺序的,因为字典的核心是键-值对的关联性。

9、以上是取键-值对,如果只需要取键,而不需要值时,则使用keys()方法:

>>> print(my_friend_1)

{‘sex‘: ‘male‘, ‘age‘: ‘31‘, ‘city‘: ‘Shanghai‘, ‘name‘: ‘Cao Xiao Jun‘}

>>> for key in my_friend_1.keys():

...     print("\nkey: " + key)

...

key: sex

key: age

key: city

key: name

如果省略keys()方法,即 for key in my_friend_1:,则默认取键,但是建议写,这样读起来容易理解。

10、字典的遍历是不会排序的,如果的确需要对输出进行排序,可以人工干预,使用sorted()函数:

>>> for thing in sorted(my_friend_1.keys()):

...     print(thing)

...

age

city

name

sex

11、如果需要遍历字典中的值,可以使用values()方法,它返回一个值列表,但是不包含键:

>>> print(my_friend_1)

{‘sex‘: ‘male‘, ‘age‘: ‘31‘, ‘city‘: ‘Shanghai‘, ‘name‘: ‘Cao Xiao Jun‘}

>>> for values in my_friend_1.values():

...     print(values)

...

male

31

Shanghai

Cao Xiao Jun

考虑到值有时候会有重复,使用set()函数,可以去除重复:

>>> print(my_friend_1)

{‘sex‘: ‘male‘, ‘new‘: 31, ‘name‘: ‘Cao Xiao Jun‘, ‘city‘: ‘Shanghai‘, ‘new_1‘: ‘31‘, ‘age‘: ‘31‘}

>>> for i in set(my_friend_1.values()):

...     print(i)

...

Cao Xiao Jun

male

Shanghai

31

31

12、将一系列字典存储在列表中,或者将列表作为值存储在字典中,这称为嵌套。你可以在列表中嵌套字典、在字典中嵌套列表,甚至在字典中嵌套字典。

#!/usr/bin/env python3

alien_0 = {‘color‘: ‘green‘, ‘points‘: 5}

alien_1 = {‘color‘: ‘yellow‘, ‘points‘: 10}

alien_2 = {‘color‘: ‘red‘, ‘points‘: 15}

aliens = [alien_0,alien_1,alien_2]

for alien in aliens:

print(alien)

这是一种典型的嵌套,把字典作为一个值,写入列表中,此时遍历列表,就是打印列表的每个元素,就是每个字典:

[[email protected] ex-python]# ./name_cases.py

{‘color‘: ‘green‘, ‘points‘: 5}

{‘color‘: ‘yellow‘, ‘points‘: 10}

{‘color‘: ‘red‘, ‘points‘: 15}

嵌套循环的一个例子:

#!/usr/bin/env python3

aliens = []

for alien_number in range(30):

new_alien = {‘color‘: ‘green‘, ‘points‘: 5, ‘speed‘: ‘slow‘}

aliens.append(new_alien)

for alien in aliens[:5]:

print(alien)

print("...")

print("Total number of aliens: " + str(len(aliens)))

其中,for alien_number in range(30):,就是表示循环30次。

这是一种特殊的写法,可以看到alien_number这个变量在接下来的语句中并没有出现,配合range(30)[也就是range(0,30)]函数,实现了循环30次的效果。

13、在字典中存储列表:

[[email protected] ex-python]# cat name_cases.py

#!/usr/bin/env python3

favorite_languages = {

‘jen‘: [‘python‘, ‘ruby‘],

‘sarah‘: [‘c‘],

‘edward‘: [‘ruby‘, ‘go‘],

‘phil‘: [‘python‘,‘haskell‘],

}

for name, languages in favorite_languages.items():

print("\n" + name.title() + "‘s favorite languages are:")

for language in languages:

print("\t" + language.title())

输出:

[[email protected] ex-python]# ./name_cases.py

Phil‘s favorite languages are:

Python

Haskell

Jen‘s favorite languages are:

Python

Ruby

Edward‘s favorite languages are:

Ruby

Go

Sarah‘s favorite languages are:

C

14、在字典中存储字典,但是这样做代码很可能很快复杂起来:

[[email protected] ex-python]# cat name_cases.py

#!/usr/bin/env python3

users = {

‘user_1‘: {

‘first‘: ‘alex‘,

‘last‘: ‘hou‘,

‘location‘: ‘dalian‘,

},

‘user_2‘: {

‘first‘: ‘johnny‘,

‘last‘: ‘zhu‘,

‘location‘: ‘shanghai‘,

},

}

for username, user_info in users.items():

print("\nUsername: " + username )

full_name = user_info[‘first‘] + " " + user_info[‘last‘]

location = user_info[‘location‘]

print("\tFull name: " + full_name.title())

print("\tLocation: " + location.title())

输出:

[[email protected] ex-python]# ./name_cases.py

Username: user_1

Full name: Alex Hou

Location: Dalian

Username: user_2

Full name: Johnny Zhu

Location: Shanghai


本文出自 “Alex的博客” 博客,请务必保留此出处http://houjun19830610.blog.51cto.com/9269760/1847229

以上是关于Python初级-6字典的主要内容,如果未能解决你的问题,请参考以下文章

Python初级002-数据类型详解

python初级010-构造方法,属性和迭代器

Python随笔9-函数的初级知识

python初级(302) 6 对象

python初级(302) 6 对象

Python 初级 6 循环