Python 简明教程

Python - Dictionaries

Dictionaries in Python

在 Python 中,字典是内置数据类型,它以键值对的形式存储数据。它是一个无序、可变且经过索引的集合。字典中的每个键都是唯一的,并映射到一个值。字典通常用于存储相关的数据,例如与特定实体或对象关联的信息,您可以在其中基于它的键快速检索一个值。

In Python, a dictionary is a built-in data type that stores data in key-value pairs. It is an unordered, mutable, and indexed collection. Each key in a dictionary is unique and maps to a value. Dictionaries are often used to store data that is related, such as information associated with a specific entity or object, where you can quickly retrieve a value based on its key.

Python 的字典是映射类型的示例。映射对象将一个对象的值“映射”到另一个对象。要在键和值之间建立映射,请在两者之间放上冒号 (:) 符号。

Python’s dictionary is an example of a mapping type. A mapping object 'maps' the value of one object to another. To establish mapping between a key and a value, the colon (:) symbol is put between the two.

以下是一些 Python 字典对象示例 -

Given below are some examples of Python dictionary objects −

capitals = {"Maharashtra":"Mumbai", "Gujarat":"Gandhinagar", "Telangana":"Hyderabad", "Karnataka":"Bengaluru"}
numbers = {10:"Ten", 20:"Twenty", 30:"Thirty",40:"Forty"}
marks = {"Savita":67, "Imtiaz":88, "Laxman":91, "David":49}

Key Features of Dictionaries

以下是字典的主要特性 -

Following are the key features of dictionaries −

  1. Unordered − The elements in a dictionary do not have a specific order. Python dictionaries before version 3.7 did not maintain insertion order. Starting from Python 3.7, dictionaries maintain insertion order as a language feature.

  2. Mutable − You can change, add, or remove items after the dictionary has been created.

  3. Indexed − Although dictionaries do not have numeric indexes, they use keys as indexes to access the associated values.

  4. Unique Keys − Each key in a dictionary must be unique. If you try to assign a value to an existing key, the old value will be replaced by the new value.

  5. Heterogeneous − Keys and values in a dictionary can be of any data type.

Example 1

只能使用数字、字符串或元组作为键。所有这些都是不可变的。可以使用任何类型的对象作为值。因此,词典的以下定义也是有效的 −

Only a number, string or tuple can be used as key. All of them are immutable. You can use an object of any type as the value. Hence following definitions of dictionary are also valid −

d1 = {"Fruit":["Mango","Banana"], "Flower":["Rose", "Lotus"]}
d2 = {('India, USA'):'Countries', ('New Delhi', 'New York'):'Capitals'}
print (d1)
print (d2)

它将生成以下 output

It will produce the following output

{'Fruit': ['Mango', 'Banana'], 'Flower': ['Rose', 'Lotus']}
{'India, USA': 'Countries', ('New Delhi', 'New York'): 'Capitals'}

Example 2

Python 不接受可变对象,如列表作为键,并引发 TypeError

Python doesn’t accept mutable objects such as list as key, and raises TypeError.

d1 = {["Mango","Banana"]:"Fruit", "Flower":["Rose", "Lotus"]}
print (d1)

它将引发 TypeError

It will raise a TypeError −

Traceback (most recent call last):
   File "C:\Users\Sairam\PycharmProjects\pythonProject\main.py", line 8, in <module>
d1 = {["Mango","Banana"]:"Fruit", "Flower":["Rose", "Lotus"]}
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'list'

Example 3

可以在词典中为多个键分配一个值,但一个键在词典中不能出现多次。

You can assign a value to more than one keys in a dictionary, but a key cannot appear more than once in a dictionary.

d1 = {"Banana":"Fruit", "Rose":"Flower", "Lotus":"Flower", "Mango":"Fruit"}
d2 = {"Fruit":"Banana","Flower":"Rose", "Fruit":"Mango", "Flower":"Lotus"}
print (d1)
print (d2)

它将生成以下 output

It will produce the following output

{'Banana': 'Fruit', 'Rose': 'Flower', 'Lotus': 'Flower', 'Mango': 'Fruit'}
{'Fruit': 'Mango', 'Flower': 'Lotus'}

Creating a Dictionary

可以使用花括号 {} 创建一个 Python 词典,其中以逗号分隔的一系列键值对,并用冒号 : 分隔每个键及其关联的值。或者,可以使用 dict() 函数。

You can create a dictionary in Python by placing a comma-separated sequence of key-value pairs within curly braces {}, with a colon : separating each key and its associated value. Alternatively, you can use the dict() function.

Example

以下示例演示了如何使用花括号和 dict() 函数创建名为“student_info”的词典 −

The following example demonstrates how to create a dictionary called "student_info" using both curly braces and the dict() function −

# Creating a dictionary using curly braces
sports_player = {
   "Name": "Sachin Tendulkar",
   "Age": 48,
   "Sport": "Cricket"
}
print ("Dictionary using curly braces:", sports_player)
# Creating a dictionary using the dict() function
student_info = dict(name="Alice", age=21, major="Computer Science")
print("Dictionary using dict():",student_info)

生成的结果如下所示 −

The result produced is as shown below −

Dictionary using curly braces: {'Name': 'Sachin Tendulkar', 'Age': 48, 'Sport': 'Cricket'}
Dictionary using dict(): {'name': 'Alice', 'age': 21, 'major': 'Computer Science'}

Accessing Dictionary Items

可以使用方括号 [] 或 get() 方法访问与特定键关联的值 −

You can access the value associated with a specific key using square brackets [] or the get() method −

student_info = {
   "name": "Alice",
   "age": 21,
   "major": "Computer Science"
}
# Accessing values using square brackets
name = student_info["name"]
print("Name:",name)

# Accessing values using the get() method
age = student_info.get("age")
print("Age:",age)

获得的结果如下 −

The result obtained is as follows −

Name: Alice
Age: 21

Modifying Dictionary Items

student_info = {
   "name": "Alice",
   "age": 21,
   "major": "Computer Science"
}
# Modifying an existing key-value pair
student_info["age"] = 22

# Adding a new key-value pair
student_info["graduation_year"] = 2023
print("The modified dictionary is:",student_info)

上述代码的输出如下:

Output of the above code is as follows −

The modified dictionary is: {'name': 'Alice', 'age': 22, 'major': 'Computer Science', 'graduation_year': 2023}

Removing Dictionary Items

可以使用 del 语句、pop() 方法或 popitem() 方法删除项 −

You can remove items using the del statement, the pop() method, or the popitem() method −

student_info = {
   "name": "Alice",
   "age": 22,
   "major": "Computer Science",
   "graduation_year": 2023
}
# Removing an item using the del statement
del student_info["major"]

# Removing an item using the pop() method
graduation_year = student_info.pop("graduation_year")

print(student_info)

以下是上面代码的输出: -

Following is the output of the above code −

{'name': 'Alice', 'age': 22}

Iterating Through a Dictionary

可以使用循环遍历词典中的键、值或键值对 −

You can iterate through the keys, values, or key-value pairs in a dictionary using loops −

student_info = {
   "name": "Alice",
   "age": 22,
   "major": "Computer Science",
   "graduation_year": 2023
}
# Iterating through keys
for key in student_info:
   print("Keys:",key, student_info[key])

# Iterating through values
for value in student_info.values():
   print("Values:",value)

# Iterating through key-value pairs
for key, value in student_info.items():
   print("Key:Value:",key, value)

执行上面的代码后,我们得到以下输出: -

After executing the above code, we get the following output −

Keys: name Alice
Keys: age 22
Keys: major Computer Science
Keys: graduation_year 2023
Values: Alice
Values: 22
Values: Computer Science
Values: 2023
Key:Value: name Alice
Key:Value: age 22
Key:Value: major Computer Science
Key:Value: graduation_year 2023

Properties of Dictionary Keys

词典值没有限制。它们可以是任何任意的 Python 对象,无论是标准对象还是用户定义的对象。但是,键并非如此。

Dictionary values have no restrictions. They can be any arbitrary Python object, either standard objects or user-defined objects. However, same is not true for the keys.

关于字典键,有两个重要的点需要记住 −

There are two important points to remember about dictionary keys −

  1. More than one entry per key not allowed. Which means no duplicate key is allowed. When duplicate keys encountered during assignment, the last assignment wins. For example −

  2. Keys must be immutable. Which means you can use strings, numbers or tuples as dictionary keys but something like ['key'] is not allowed. Following is a simple example −

Python Dictionary Operators

在 Python 中,定义了以下运算符与字典操作数一起使用。在这个示例中,使用了以下词典对象。

In Python, following operators are defined to be used with dictionary operands. In the example, the following dictionary objects are used.

d1 = {'a': 2, 'b': 4, 'c': 30}
d2 = {'a1': 20, 'b1': 40, 'c1': 60}

Python Dictionary Methods

Python 包含以下词典方法 −

Python includes following dictionary methods −

Sr.No.

Methods with Description

1

dict.clear()Removes all elements of dictionary dict

2

dict.copy()Returns a shallow copy of dictionary dict

3

dict.fromkeys()Create a new dictionary with keys from seq and values set to value.

4

../python/dictionary_get.html[dict.get(key, default=None)]For key key, returns value or default if key not in dictionary

5

dict.has_key(key)Returns true if key in dictionary dict, false otherwise

6

dict.items()Returns a list of dict’s (key, value) tuple pairs

7

dict.keys()Returns list of dictionary dict’s keys

8

../python/dictionary_setdefault.html[dict.setdefault(key, default=None)]Similar to get(), but will set dict[key]=default if key is not already in dict

9

dict.update(dict2)Adds dictionary dict2’s key-values pairs to dict

10

dict.values()Returns list of dictionary dict’s values

Built-in Functions with Dictionaries

以下是我们可以用于字典的内置函数 −

Following are the built-in functions we can use with Dictionaries −

Sr.No.

Function with Description

1

cmp(dict1, dict2)Compares elements of both dict.

2

len(dict)Gives the total length of the dictionary. This would be equal to the number of items in the dictionary.

3

str(dict)Produces a printable string representation of a dictionary

4

type(variable)Returns the type of the passed variable. If passed variable is dictionary, then it would return a dictionary type.