Skip to content

Python字典

介绍

在Python中,字典(Dictionary)是一种数据结构,用于存储键值对(key-value pairs)。字典是无序的,可以通过键来访问其中的值。在其他编程语言中,字典有时也被称为关联数组或哈希映射。

字典的特点包括:

  1. 键值对存储:字典由一系列键值对组成,每个键值对之间用逗号分隔,键和值之间用冒号分隔,形如{key1: value1, key2: value2, ...}
  2. 无序性:字典中的键值对没有固定的顺序,即使你按照一定的顺序插入键值对,遍历字典时也不保证按照插入顺序输出。
  3. 可变性:字典中的元素是可变的,可以根据需要动态地添加、删除或修改键值对。
  4. 键的唯一性:字典中的键必须是唯一的,但值可以重复。

以下是一个字典的示例:

python
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}

对象和字典

在Python中,对象和字典是两种不同的概念,尽管它们在某些方面可能会有一些相似之处。下面是它们之间的主要区别:

  1. 对象
    • 在Python中,一切皆为对象,包括数字、字符串、函数等等。
    • 对象具有类型(type)和值(value),它们是内存中的实体,可以在程序中被操作和传递。
    • 对象的类型决定了该对象可以执行的操作(例如方法),以及如何进行内部存储和处理。
  2. 字典
    • 字典是Python中的一种数据结构,用于存储键值对(key-value pairs)。
    • 字典是可变的(mutable),可以动态地添加、删除或修改键值对。
    • 字典是无序的,即它们的键值对没有固定的顺序。
    • 字典的键通常是不可变的(immutable),而值可以是任意类型的对象。

虽然在Python中可以使用字典来模拟对象,例如将属性名作为键,属性值作为对应的值存储在字典中,但这只是一种实现方式,并不是对象本身。Python中的对象更广泛地涵盖了所有的数据实体,而字典只是一种特定的数据结构,用于组织和存储键值对。

字典(Python)和 JavaScript 中的对象

字典(Python)和 JavaScript 中的对象之间有相似之处,因为它们都是键值对的集合,并且都具有类似的用途和特性。以下是它们之间的一些相似之处:

  1. 键值对存储:字典和 JavaScript 对象都是以键值对的形式存储数据的。在 Python 中,字典使用大括号 {} 包裹键值对,而在 JavaScript 中,对象使用大括号 {} 包裹属性和值之间的映射。
  2. 动态性:两者都是动态的数据结构,可以随时添加、删除或修改键值对。这种动态性使得它们在需要灵活地管理和操作数据时非常有用。
  3. 键的唯一性:字典和 JavaScript 对象都要求键是唯一的。在字典中,相同的键只能出现一次;在 JavaScript 对象中,如果试图使用相同的键添加新的属性,它会覆盖旧的属性值。

尽管有这些相似之处,但它们也有一些区别:

  1. 语法:Python 中的字典使用大括号 {},而 JavaScript 中的对象也使用大括号 {},但 JavaScript 对象的键可以是字符串、数字或符号,而 Python 字典的键通常是不可变的对象,比如字符串、数字或元组。
  2. 方法:Python 字典有自己的一系列方法,比如keys()values()items()等,用于对字典进行操作和遍历;JavaScript 对象则有一些内置的方法,比如Object.keys()Object.values()Object.entries()等,用于对对象进行操作和遍历。

尽管有这些差异,但字典和 JavaScript 对象在实际使用中都是非常有用的数据结构,它们提供了一种灵活和便捷的方式来组织和操作数据。

判断字典是否存在某个属性

在Python中,你可以使用字典的get()方法来判断某个键是否存在,并在键不存在时进行处理。如果键存在,则get()方法返回对应的值;如果键不存在,则返回指定的默认值(如果提供了默认值),或者返回None

下面是一个示例,演示如何判断某个键是否存在,如果不存在则创建并赋值:

python
my_dict = {'name': 'John', 'age': 30}

# 判断是否存在键'name'
if 'name' in my_dict:
    print("键'name'存在,其对应的值为:", my_dict['name'])
else:
    print("键'name'不存在,将创建并赋值")
    my_dict['name'] = 'Alice'

# 判断是否存在键'city'
if my_dict.get('city') is None:
    print("键'city'不存在,将创建并赋值")
    my_dict['city'] = 'New York'

print(my_dict)

在这个示例中:

  • 首先,我们使用in操作符来判断键'name'是否存在于字典my_dict中。如果存在,则打印出对应的值;如果不存在,则说明键不存在,我们在这里简单地打印一条消息,并将'Alice'赋值给键'name'
  • 接着,我们使用get()方法来判断键'city'是否存在于字典my_dict中。如果返回的是None,则说明键不存在,我们在这里简单地打印一条消息,并将'New York'赋值给键'city'
  • 最后,打印出更新后的字典my_dict

在Python中,类似于JavaScript中a[key]这样的语法也是支持的,但是要小心处理键不存在的情况,否则会抛出KeyError异常。你可以使用try-except语句来捕获这种异常,并在键不存在时执行相应的操作。

下面是一个示例,演示如何使用类似于JavaScript中a[key]的语法来判断键是否存在,并在键不存在时进行创建并赋值的操作:

python
my_dict = {'name': 'John', 'age': 30}

# 判断是否存在键'name'
if 'name' in my_dict:
    print("键'name'存在,其对应的值为:", my_dict['name'])
else:
    print("键'name'不存在,将创建并赋值")
    my_dict['name'] = 'Alice'

# 使用类似于JavaScript的语法判断键'city'是否存在,并在不存在时创建并赋值
try:
    city_value = my_dict['city']
    print("键'city'存在,其对应的值为:", city_value)
except KeyError:
    print("键'city'不存在,将创建并赋值")
    my_dict['city'] = 'New York'

print(my_dict)

在这个示例中,我们使用了类似于JavaScript中a[key]的语法来获取字典中键'city'对应的值。如果键存在,则获取成功;如果键不存在,则会抛出KeyError异常。我们在except块中捕获了这个异常,并在键不存在时创建并赋值。与之相反,在JavaScript中,如果使用对象的方式(obj[key])访问不存在的键,会返回undefined而不会抛出异常。

常用方法

get()

在 Python 中,字典的 get() 方法是用来获取指定键的值的方法。它接受一个参数,即要获取值的键,如果键存在,则返回对应的值;如果键不存在,则返回指定的默认值(如果提供了默认值),或者返回 None

get() 方法的语法如下:

python
value = my_dict.get(key, default=None)

其中,my_dict 是要操作的字典,key 是要获取值的键,default 是可选的默认值参数,如果键不存在,则返回默认值。

items()

  • items() 方法返回一个包含字典中所有键值对的可迭代视图(iterable view)。
  • 这个视图中的每个元素都是一个键值对的元组 (key, value),其中 key 是字典中的键,value 是对应的值。
  • 你可以通过遍历这个视图来获取字典中的所有键值对。
python
my_dict = {'a': 1, 'b': 2, 'c': 3}

# 使用 items() 方法获取所有键值对
for key, value in my_dict.items():
    print("键:", key, "值:", value)

values()

  • values() 方法返回一个包含字典中所有值的可迭代视图(iterable view)。
  • 这个视图中的每个元素都是字典中的一个值。
  • 你可以通过遍历这个视图来获取字典中的所有值。
python
my_dict = {'a': 1, 'b': 2, 'c': 3}

# 使用 values() 方法获取所有值
for value in my_dict.values():
    print("值:", value)

keys()

keys() 方法是 Python 字典对象的一个方法,用于返回一个包含字典中所有键的可迭代视图(iterable view)。这个视图可以用于遍历字典中的所有键,或者将其转换为列表、集合等其他数据类型。

python
my_dict = {'a': 1, 'b': 2, 'c': 3}

# 使用 keys() 方法获取所有键
for key in my_dict.keys():
    print("键:", key)