Python基础之什么是字典?

原创小白系列第 7 篇

4.5.1 什么是字典

字典是另外一个可变的数据结构,且可存储任意类型对象,比如字符串、数字、列表等。字典是由关键字和值两部分组成,也就是 key 和 value,中间用冒号分隔。这种结构类似于新华字典,字典中每一个字都有一个对应的解释,具体语法如下:

语法:

字典名 = { 关键字1:值,关键字2:值,关键字3:值}

每个键与值用冒号隔开(:),每对用逗号分割,整体放在花括号中({})。

键必须独一无二,但值则不必。可以有任意多个键值对

值可以取任何数据类型,但键必须是不可变的,如字符串,数或元组。

例子:

#构建一个字典,记录各宫嫔妃的年薪银子

name_dictionary = {'魏璎珞':300,'皇后':1000,'皇贵妃':800,'贵妃':600,'斌':200}

print(name_dictionary)

print('字典的数据类型表示是:',type(name_dictionary))

{'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200}

字典的数据类型表示是:

4.5.2 字典特性

字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。两个重要的点需要记住:

1.不允许同一个键出现两次:创建时如果同一个键被赋值两次,后一个值会被记住。

例子

# 定义两个同样的关键字Namedict = {'Name': 'Python', 'Age': 7, 'Name': 'Java'}print("dict['Name']: ", dict['Name'])

dict['Name']:  ManniJava

2. 键必须不可变:所以可以用数,字符串或元组充当,所以用列表就不行

例子

# 关键字Name为列表dict = {['Name']:'Python', 'Age': 7};print ("dict['Name']: ", dict['Name'])

File "/Users/yoni.ma/PycharmProjects/seven_days_python/Forth_day_strcure/dict_p.py", line 22, in

dict['Name']:  Java

    dict = {['Name']:'Python', 'Age': 7};

TypeError: unhashable type: 'list'

4.5.3 字典的基本操作

字典在python中的类型表示是  。当查看到变量的类型是dict,则可以对其进行字典的操作。常见的字典操作是访问字典、遍历字典等。这些操作在实际项目中经常被使用到,比如excel文件读入内存以后,按照字典的方法存放。然后对其增加或删除值。

1.访问字典

访问字典也就是获取关键字对应的值,方法是指定字典名和放在方括号内的关键字,具体如下。获取后的值可以赋值给变量。

语法:

变量名 = 字典名[关键字]

例子

# 访问字典

weiyingluo = name_dictionary['魏璎珞']

print(f'魏璎珞的年薪是:{weiyingluo}两')

魏璎珞的年薪是:300两

2.添加键值对

字典是一种可变的数据结构,可以随时添加或者删除其中的键值对。其中添加键值的方法是,指定字典名、用方括号括起的键和相关的值,具体如下。

语法:

字典名[关键字名] = 值

例子

# 增加贵人和常在的年薪银子

print(f'原来的后宫年薪字典是:{name_dictionary}')

name_dictionary['贵人'] = 100

name_dictionary['常在'] = 50

print(F'增加键值后的后宫年薪字典变成:{name_dictionary}')

原来的后宫年薪字典是:{'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200}

增加键值后的后宫年薪字典变成:{'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200, '贵人': 100, '常在': 50}

3.修改键值对

如果字典中的值不是我们想要的,可以通过修改的方法达到。以此指定字典名、用方括号括起的键以及与该键相对应的新值。

语法:

字典名[关键字名] = 新的值

例子

# 修改字典的值,比如修改常在的年薪为70两

print('常在原来的年薪是{} 两'.format(name_dictionary['常在']))

name_dictionary['常在']= 70

change_changzai = name_dictionary['常在']

print(f'常在修改后的年薪是{change_changzai} 两')

常在原来的年薪是50 两

常在修改后的年薪是70 两

4删除键值对

如果字典中的键值对不再需要,我们可以彻底删除。Python使用的是del语句,必须要指定要删除的字典名和关键字。注意是永久删除

语法:

del 字典名[关键字]

例子

#删除字典中的键值对,比如删除常在

del name_dictionary['常在']

print(f'删除常在后的后宫嫔妃年薪字典变成:{name_dictionary}')

删除常在后的后宫嫔妃年薪字典变成:{'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200, '贵人': 100}

如果我们还需要用到被删除的键值对,则我们使用pop(‘键的名字’)方法。该方法是删除字典给定键所对应的值,并且返回该值。

print('原来的字典是:', name_dictionary)# 使用pop方法删除魏璎珞name_pop = name_dictionary.pop('魏璎珞')# 使用删除后的值print('魏璎珞的年薪是:',name_pop)print('使用pop方法删除后的字典是:',name_dictionary)

原来的字典是: {'魏璎珞': 300, '皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200, '贵人': 100}

魏璎珞的年薪是: 300

使用pop方法删除后的字典是: {'皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200, '贵人': 100}

 

除了pop()方法以外, Python中还有一个popitem()方法。它可以随机删除字典中的一对(一般删除末尾一对),并且可以被后续的程序使用。我们经常用此方法逐个删除字典中的所有键值对。

# 随机删除字典中的一对pop_name = name_dictionary.popitem()print('使用popitem删除的是:',pop_name)print('随机删除字典中一对键值对后:',name_dictionary)pop2_name = name_dictionary.popitem()print('再次使用popitem删除的是:',pop2_name)print('再次随机删除字典中一对键值对后:',name_dictionary)

使用popitem删除的是:('贵人', 100)

随机删除字典中一对键值对后: {'皇后': 1000, '皇贵妃': 800, '贵妃': 600, '斌': 200}

再次使用popitem删除的是: ('斌', 200)

再次随机删除字典中一对键值对后: {'皇后': 1000, '皇贵妃': 800, '贵妃': 600}

如果需要删除所有的键值对,我们可以使用clear()方法清空所有的数据。但是需要注意del语句是删除字典,此时打印删除后的字典则出错。两者是有区别的。

# clear()方法清除字典中的所有数据print('原来字典的长度是:',len(name_dictionary))name_dictionary.clear()print('使用clear清除字典中的所有内容:',name_dictionary)print('清空以后字典的长度是:',len(name_dictionary))# 使用del删除字典del name_dictionary# 字典已经被删除,则再次打印则出错:name 'name_dictionary' is not definedprint(name_dictionary)

原来字典的长度是: 3

使用clear清除字典中的所有内容: {}

清空以后字典的长度是: 0

Traceback (most recent call last):

  File "/Users/seven_days_python/Forth_day_strcure/dict_p.py", line 139, in

    print(name_dictionary)

NameError: name 'name_dictionary' is not defined

5.创建空字典

在实际项目中,我们可能不知道字典中存放的内容是什么。这时,我们可以采用从空的字典开始动态创建,也就是在程序运行的时候添加具体的内容。

常见的使用场景是:第一个:需要用户输入数据存储为字典;第二个是自动生成大量的键值对,比如爬虫,爬取豆瓣电影的排名信息。我们可以把排名放入空的字典中,然后每次爬取一个电影,添加一个对应的键值对。

例子

# 从空的字典开始创建

douban_movies = {} #定义空的字典

douban_movies['排名'] = 1

douban_movies['片名'] = '霸王别姬'

douban_movies['主演'] = '张国荣、张丰毅、巩俐'

douban_movies['导演'] = '陈凯歌'

print('从空的列表中构建字典:',douban_movies)

从空的列表中构建字典: {'排名': 1, '片名': '霸王别姬', '主演': '张国荣、张丰毅、巩俐', '导演': '陈凯歌'}

以上内容摘自《零基础轻松学 Python》

零基础学 Python,来这里

发布了88 篇原创文章 · 获赞 18 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/lovenankai/article/details/103966514