Python从入门到精通——最全字典操作详解(字典遍历、字典嵌套)


1、字典初识

字典定义: Python中,字典是一系列键-值对。每个键都与一个值相关联。
访问方式: 通过键访问与之关联的值,这些值可以是数字、字符串、列表乃至字典,Python中的任何对象基本都可以作为字典的值。
表达方式: 字典使用花括号来表示,键-值使用冒号分隔,键-值对之间使用逗号分隔,如下所示:

persons = {}  # 表示空字典
person = {'age': 19, 'city': 'BeiJing'}

2、访问字典中的值

字典中,访问字典中的值需要使用:字典名[键] 的方式进行访问,如:

person = {'age': 19, 'city': 'BeiJing'}
print(person['age'])
输出为:19

3、字典元素操作

3.1 字典内添加键-值对

字典是动态结构,能够随时在其中添加键-值对,通过使用:字典名[键] = 值的方式在在字典中添加元素,如:

person = {'age': 19; 'city': 'GuangZhou'}
person['Province'] = 'GuangDong'
print(person)
输出为:{'age':19, 'Province': 'GuangDong', 'city': 'GuangZhou'}

注:字典内键值对的排列顺序与添加顺序不同,字典不关心键值对的添加顺序,只关心键值之间的关系

3.2 删除键-值对

可以使用del语句将相应的键-值对彻底删除,使用规则:指定字典名和要删除的键,,如:

person = {'age': 19, 'city': 'BeiJing'}
print(person)  # 输出原始字典元素

del  person['city']
print(person)  # 显示删除city键的字典元素
输出为:{'age': 19, 'city': 'BeiJing'}
{'age': 19}

删除的键值对永远消失

3.3 修改字典中的值

通过指定:字典名[键]和新的值的方式对字典的值进行修改,

person = {'age': 19, 'city': 'BeiJing'}
print(person)  # 输出原始字典元素

person['age':25]
print(person)  # 显示修改后的字典元素
输出为:{'age': 19, 'city': 'BeiJing'}
{'age': 25, 'city': 'BeiJing'}

3.4 多行表示字典

对于很大的字典,或者为了表达清晰,我们可以使用多行来表示字典,如:

favorite_languages = {
	‘Mary’: ‘C’,  # 要有四个空格缩进
	‘John’: ‘Python’,# 缩进与第一行相同
	‘David’: ‘Java’, # 最后一行需要逗号
	} #缩进,与键值对缩进相同

4、字典遍历

4.1 遍历字典所有的键-值对

遍历字典所有的键-值对,可以使用for循环实现:

  • for语句第一部分: 声明两个变量,用于存储键-值对中的键和值。
  • for语句第二部分: 包含字典名和方法items(),items()方法可以返回一个键-值对列表。

用for循环遍历字典所有键-值对例子:

#!/usr/bin/env python
#-*- coding:utf-8 -*-
user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
}
 
 # key和value分别表示两个变量,存储键和值,
 # user_0.items(),for语句的第二部分,字典名和items方法
for key, value in user_0.items(): 
    print("\nkey:"+key)
    print("value:" + value)

运行结果:

key:username
value:efermi

key:first
value:enrico

key:last
value:fermi

4.2 遍历字典中的所有键

遍历字典中的所有键,使用方法**keys()**来实现。

方法keys()可以返回包含字典中所有键的列表

Keys方法遍历字典中的所有键:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
}
 
for key in user_0.keys(): #keys()方法遍历所有键
    print(key)

运行结果:

last
username
first

4.3 按特定顺序遍历字典中的多有键

用keys方法获取字典中的元素时,获取顺序是不可预测的。如果想获得特定顺序,可以在for循环中调用sorted() 函数对元素进行排序。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
user_0 = {
    'username': 'efermi',
    'first': 'enrico',
    'last': 'fermi',
}
for key in sorted(user_0.keys()):  # sorted()函数进行排序
    print(key)

运行结果:

first
last
username

4.4 遍历字典中的所有值

values() 方法能够返回一个只包含字典中值的列表。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_languages = {
    'Jen': 'python',
    'Sarah': 'c',
    'Edward': 'python',
}
for language in favorite_languages.values():  # 遍历字典中所有的值
    print(language)

运行结果:

python
python
c

values方法没有考虑是否重复。使用集合set,可以使得列表元素独一无二。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
favorite_languages = {
    'Jen': 'python',
    'Sarah': 'c',
    'Edward': 'python',
}
# 使用集合set,使得值独一无二
for language in set(favorite_languages.values()):  
    print(language)

运行结果(使用集合set):

 c
python

同样的,values方法也可以调用sorted函数实现按特定顺序遍历。

5、字典嵌套

字典存储在列表中,列表存储在字典中,这称为嵌套。

5.1 字典列表

列表内元素是字典的形式。

字典列表例子: 定义三个字典,每个包含颜色和点数两个键和其相关联的值,将其三个字典存储在一个了列表中。

# 三个字典
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)
输出结果:
{'points': 5, 'color': 'green'}
{'points': 10, 'color': 'yellow'}
{'points': 15, 'color': 'red'}

5.2 在字典中存储列表

当字典中的一个键关联多个值时,可以在字典中嵌套一个列表

在字典中存储列表例子: 定义一个字典,存储访问每个人喜欢的语言,这个时候,每个人喜欢的语言,可能不止一种,这时就会用到列表存储:

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())
输出结果为:

Jen's favorite languages are:
	Python
	Ruby
 
Sarah's favorite languages are:
	C
 
Phil's favorite languages are:
	Python
	Haskell
 
Edward's favorite languages are:
	Ruby
	Go

5.3 在字典中存储字典

与键关联的值也是一个字典

字典中存储字典例子: 对于每位用户,我们都存储了其三项信息:名、姓和居住地;为访问这些信息,我们遍历所有的用户名,
并访问与每个用户名相关联的信息字典:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
users = {
    'aeinstein': {
        'first': 'albert',
        'last': 'einstein',
        'location': 'princeton',
    },
    'mcurie': {
        'first': 'marie',
        'last': 'curie',
        'location': 'paris',
    },
}
 
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())
输出结果:

Username: mcurie
	Full name: Marie Curie
	Location: Paris
 
Username: aeinstein
	Full name: Albert Einstein
	Location: Princeton
  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值