当前位置: 首页 > news >正文

Python字典及操作

文章目录

    • Python字典
      • Python字典类型简介
      • 访问字典中的元素
        • 1)使用方括号表示法
        • 2)使用get()方法
      • 添加键值对
      • 修改键值对
      • 删除键值对
      • 遍历字典
        • 遍历字典中所有键值对
        • 遍历字典中的所有键
      • 遍历字典中所有值
      • 总结
    • Python字典推导
      • Python字典推导式简介
      • Python字典推导式示例
        • 使用Python字典推导式来转换字典
        • 使用列表推导式过滤字典
      • 总结


Python字典

摘要:在本节中,你将了解Python中的字典类型,它允许你创建一个键值对的集合。

Python字典类型简介

Python字典是一个键值对的集合,其中每个键都与一个值相关联。

键值对中的值可以是数字、字符串、列表、元组,甚至是另一个字典。实际上,你可以使用Python中任何有效的数据类型作为键值对中的值。

键值对中的键必须是不可变的。换句话说,键不能被更改,例如,数字、字符串、元组等。

Python使用花括号 {} 来定义一个字典。在花括号内,你可以放置零个、一个或多个键值对。

以下示例定义了一个空字典:

empty_dict = {}

通常,你会在循环(无论是for循环还是while循环)之前定义一个空字典。然后在循环内部,向字典中添加键值对。

要查看一个字典的类型,可以使用type()函数,如下所示:

empty_dict = {}print(type(empty_dict))

输出:

<class 'dict'> 

以下示例定义了一个包含一些键值对的字典:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}

这个名为person的字典有五个键值对,它们分别代表名字、姓氏、年龄、最喜欢的颜色以及活跃状态。

访问字典中的元素

要从字典中通过键来访问对应的值,你可以使用方括号表示法或 get() 方法。

1)使用方括号表示法

要访问与某个键关联的值,你需将该键放在方括号内:

dict[key]

以下展示了如何获取 person 字典中与键 first_namelast_name 相关联的值:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}
print(person['first_name'])
print(person['last_name'])

输出:

John
Doe
2)使用get()方法

如果你尝试访问一个不存在的键,就会得到一个错误。例如:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}ssn = person['ssn']

错误:

Traceback (most recent call last):File "dictionary.py", line 15, in <module>ssn = person['ssn']
KeyError: 'ssn'

为了避免这种错误,你可以使用字典的 get() 方法:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}ssn = person.get('ssn')
print(ssn)

输出:

None

如果键不存在,get() 方法会返回 None,而不是抛出 KeyError 异常。请注意,None 表示不存在任何值。

当键不存在时,get() 方法还可以通过将默认值作为第二个参数传入来返回该默认值。

以下示例中,如果 person 字典中不存在 ssn 键,就会返回字符串 '000-00-0000'

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}ssn = person.get('ssn', '000-00-0000')
print(ssn)

输出:

000-00-0000

添加键值对

由于字典具有动态结构,你可以在任何时候向其中添加新的键值对。

要向字典中添加一个新的键值对,你需要指定字典的名称,接着在方括号中写上新的键,并赋予其新的值。

以下示例向 person 字典中添加了一个新的键值对:

person['gender'] = 'Female' 

修改键值对

要修改与某个键相关联的值,你需要指定字典名称,将该键放在方括号中,并赋予与该键相关联的新值:

dict[key] = new_value

代码语言:Python (python)
以下示例修改了 person 字典中与 age 键相关联的值:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}person['age'] = 26print(person)

输出:

{'first_name': 'John', 'last_name': 'Doe', 'age': 26, 'favorite_colors': ['blue', 'green'], 'active': True}

删除键值对

要通过键来删除一个键值对,你可以使用 del 语句:

del dict[key]

在这个语法中,你要指定字典的名称以及你想要删除的键。

以下示例从 person 字典中删除了键 'active'

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}del person['active']
print(person)

输出:

{'first_name': 'John', 'last_name': 'Doe', 'age': 25, 'favorite_colors': ['blue', 'green']}

遍历字典

要检查一个字典,你可以使用 for 循环来遍历它的键值对、键或者值。

请注意,自 Python 3.7 版本起,当你遍历一个字典时,你获取到的键值对的顺序与你插入它们时的顺序是相同的。

遍历字典中所有键值对

Python字典提供了一个名为 items() 的方法,该方法会返回一个对象,这个对象包含一个列表,列表中的元素是以元组形式呈现的键值对。

例如:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}print(person.items())

输出:

dict_items([('first_name', 'John'), ('last_name', 'Doe'), ('age', 25), ('favorite_colors', ['blue', 'green']), ('active', True)])

要遍历字典中的所有键值对,你可以使用一个 for 循环,并使用两个变量 keyvalue 来解包列表中的每个元组:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}for key, value in person.items():print(f"{key}: {value}")

输出:

first_name: John
last_name: Doe
age: 25
favorite_colors: ['blue', 'green']
active: True

请注意,在 for 循环中你可以使用任何变量名,不一定非得是 keyvalue

遍历字典中的所有键

有时候,你可能只想遍历字典中的所有键。在这种情况下,你可以使用 for 循环结合 keys() 方法来实现。

keys() 方法会返回一个对象,该对象包含字典中所有键的列表。

例如:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}for key in person.keys():print(key)

输出:

first_name
last_name
age
favorite_colors
active

实际上,当遍历一个字典时,遍历所有键是默认行为。因此,你无需使用 keys() 方法。

下面的代码与上述示例中的代码会返回相同的输出:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}for key in person:print(key)

遍历字典中所有值

values() 方法会返回一个仅包含值的列表,其中不包含任何键。

要遍历字典中的所有值,你可以使用 for 循环结合 values() 方法:

person = {'first_name': 'John','last_name': 'Doe','age': 25,'favorite_colors': ['blue', 'green'],'active': True
}for value in person.values():print(value)

输出:

John
Doe
25
['blue', 'green']
True

总结

  • Python字典是一个键值对的集合,其中每个键都有一个与之关联的值。
  • 使用方括号或 get() 方法通过键来访问对应的值。
  • 使用 del 语句根据键从字典中删除一个键值对。
  • 使用 for 循环遍历字典中的键、值以及键值对。

Python字典推导

摘要:在本节中,你将学习Python字典推导式,以对字典中的元素进行转换或筛选。

Python字典推导式简介

字典推导式使你能够在字典上运行一个for循环,并对每个元素执行某些操作,比如转换或筛选,然后返回一个新的字典。

for循环不同的是,当你正确使用字典推导式时,它提供了一种更具表现力且更简洁的语法。

以下是字典推导式的一般语法:

{key:value for (key,value) in dict.items() if condition}

这个字典推导式表达式会返回一个新的字典,其元素由表达式key:value指定。

Python字典推导式示例

我们将了解如何使用字典推导式来转换和筛选字典中的元素。

使用Python字典推导式来转换字典

假设你有如下这样一个字典,其元素是股票代码和价格:

stocks = {'AAPL': 121,'AMZN': 3380,'MSFT': 219,'BIIB': 280,'QDEL': 266,'LVGO': 144
}

为了将每支股票的价格提高2%,你可能会写出像这样的一个for循环:

stocks = {'AAPL': 121,'AMZN': 3380,'MSFT': 219,'BIIB': 280,'QDEL': 266,'LVGO': 144
}new_stocks = {}
for symbol, price in stocks.items():new_stocks[symbol] = price*1.02print(new_stocks)

输出:

{'AAPL': 123.42, 'AMZN': 3447.6, 'MSFT': 223.38, 'BIIB': 285.6, 'QDEL': 271.32, 'LVGO': 146.88}

它的工作原理如下:

  • 首先,遍历 stocks 字典中的各个键值对。
  • 其次,将价格提高2%,然后把该键值对添加到新字典(new_stocks)中。

下面的示例展示了如何使用字典推导式来达到相同的结果:

stocks = {'AAPL': 121,'AMZN': 3380,'MSFT': 219,'BIIB': 280,'QDEL': 266,'LVGO': 144
}new_stocks = {symbol: price * 1.02 for (symbol, price) in stocks.items()}print(new_stocks)

这个字典推导式与对应的for循环是等效的:

# for loop
new_stocks = {}
for symbol, price in stocks.items():new_stocks[symbol] = price*1.02# dictionary comprehension
new_stocks = {symbol: price * 1.02 for (symbol, price) in stocks.items()}
使用列表推导式过滤字典

为了筛选出价格大于200的股票,你可以使用以下的for循环:

stocks = {'AAPL': 121,'AMZN': 3380,'MSFT': 219,'BIIB': 280,'QDEL': 266,'LVGO': 144
}selected_stocks = {}
for symbol, price in stocks.items():if price > 200:selected_stocks[symbol] = priceprint(selected_stocks)

它的工作原理如下:

  • 首先,遍历 stocks 字典中的各个键值对。
  • 然后,如果价格大于200,就将该键值对添加到 selected_stocks 字典中。

下面的示例使用带有 if 子句的字典推导式来获得相同的结果:

stocks = {'AAPL': 121,'AMZN': 3380,'MSFT': 219,'BIIB': 280,'QDEL': 266,'LVGO': 144
}selected_stocks = {s: p for (s, p) in stocks.items() if p > 200}print(selected_stocks)

并且你可以比较一下这个for循环和字典推导式:

# for loop
selected_stocks = {}
for symbol, price in stocks.items():if price > 200:selected_stocks[symbol] = price# dictionary comprehension
selected_stocks = {s: p for (s, p) in stocks.items() if p > 200}

总结

  • 字典推导式会遍历字典中的各个键值对,并且使你能够通过对每个键值对进行转换或筛选来创建一个新的字典。

相关文章:

  • 继承-C++
  • spring security解析
  • LeetCode 热题 100_最长递增子序列(87_300_中等_C++)(动态规划)
  • 小甲鱼python【p5】
  • 第八节:React HooksReact 18+新特性-React Server Components (RSC) 工作原理
  • DISCO:利用大型语言模型提取反事实
  • React-router v7 第四章(路由传参)
  • 不关“猫”如何改变外网IP?3种免重启切换IP方案
  • Spring Boot JPA 开发之Not an entity血案
  • C++学习Day0:c++简介
  • MySQL SQL 执行顺序(理论顺序)
  • 若依微服务版启动小程序后端
  • 银河麒麟系统 达梦8 安装 dlask 框架后端环境
  • [图论]生成树 引言
  • Elasticsearch使用及常见的问题
  • 基于STM32的双摄联合识别系统
  • 阿里一面:Nacos配置中心交互模型是 push 还是 pull ?(原理+源码分析)
  • 4月16日
  • Next.js项目生成sitemap.xml站点地图
  • 楼宇自控系统如何为现代建筑打造安全、舒适、节能方案
  • 外贸网站怎么做促销/重庆seo排名
  • 做面膜的网站/群排名优化软件
  • 做ppt如何从网站插入视频/网络广告营销的概念
  • 网站怎么做描文本/百度指数的主要功能有
  • wordpress修改文章字体大小/网站seo李守洪排名大师
  • wordpress图片加水印/厦门seo排名公司