Python 简明教程
Python - Dictionaries
Dictionaries in Python
在 Python 中,字典是内置数据类型,它以键值对的形式存储数据。它是一个无序、可变且经过索引的集合。字典中的每个键都是唯一的,并映射到一个值。字典通常用于存储相关的数据,例如与特定实体或对象关联的信息,您可以在其中基于它的键快速检索一个值。
Python 的字典是映射类型的示例。映射对象将一个对象的值“映射”到另一个对象。要在键和值之间建立映射,请在两者之间放上冒号 (:) 符号。
以下是一些 Python 字典对象示例 -
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
以下是字典的主要特性 -
-
Unordered − 字典中的元素没有特定的顺序。Python 字典在 3.7 版本之前不维持插入顺序。从 Python 3.7 开始,字典将插入顺序作为语言特性进行维护。
-
Mutable − 您可以在创建字典后更改、添加或删除项。
-
Indexed − 尽管字典没有数字索引,但它们使用键作为索引来访问关联的值。
-
Unique Keys − 字典中的每个键都必须是唯一的。如果您尝试向现有键分配值,则旧值将被新值替换。
-
Heterogeneous − 字典中的键和值可以是任何数据类型。
Example 1
只能使用数字、字符串或元组作为键。所有这些都是不可变的。可以使用任何类型的对象作为值。因此,词典的以下定义也是有效的 −
d1 = {"Fruit":["Mango","Banana"], "Flower":["Rose", "Lotus"]}
d2 = {('India, USA'):'Countries', ('New Delhi', 'New York'):'Capitals'}
print (d1)
print (d2)
它将生成以下 output −
{'Fruit': ['Mango', 'Banana'], 'Flower': ['Rose', 'Lotus']}
{'India, USA': 'Countries', ('New Delhi', 'New York'): 'Capitals'}
Example 2
Python 不接受可变对象,如列表作为键,并引发 TypeError
。
d1 = {["Mango","Banana"]:"Fruit", "Flower":["Rose", "Lotus"]}
print (d1)
它将引发 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
可以在词典中为多个键分配一个值,但一个键在词典中不能出现多次。
d1 = {"Banana":"Fruit", "Rose":"Flower", "Lotus":"Flower", "Mango":"Fruit"}
d2 = {"Fruit":"Banana","Flower":"Rose", "Fruit":"Mango", "Flower":"Lotus"}
print (d1)
print (d2)
它将生成以下 output −
{'Banana': 'Fruit', 'Rose': 'Flower', 'Lotus': 'Flower', 'Mango': 'Fruit'}
{'Fruit': 'Mango', 'Flower': 'Lotus'}
Creating a Dictionary
可以使用花括号 {} 创建一个 Python 词典,其中以逗号分隔的一系列键值对,并用冒号 : 分隔每个键及其关联的值。或者,可以使用 dict()
函数。
Example
以下示例演示了如何使用花括号和 dict()
函数创建名为“student_info”的词典 −
# 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)
生成的结果如下所示 −
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()
方法访问与特定键关联的值 −
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)
获得的结果如下 −
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)
上述代码的输出如下:
The modified dictionary is: {'name': 'Alice', 'age': 22, 'major': 'Computer Science', 'graduation_year': 2023}
Removing Dictionary Items
可以使用 del
语句、pop()
方法或 popitem()
方法删除项 −
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)
以下是上面代码的输出: -
{'name': 'Alice', 'age': 22}
Iterating Through a Dictionary
可以使用循环遍历词典中的键、值或键值对 −
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)
执行上面的代码后,我们得到以下输出: -
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 对象,无论是标准对象还是用户定义的对象。但是,键并非如此。
关于字典键,有两个重要的点需要记住 −
-
每个键不允许出现多次。这意味着不允许重复的键。在赋值期间遇到重复的键时,最后的赋值获胜。例如 −
-
键必须是不可变的。这意味着可以使用字符串、数字或元组作为字典键,但诸如 ['key'] 之类的内容是不允许的。以下是一个简单的示例 −
Python Dictionary Operators
在 Python 中,定义了以下运算符与字典操作数一起使用。在这个示例中,使用了以下词典对象。
d1 = {'a': 2, 'b': 4, 'c': 30}
d2 = {'a1': 20, 'b1': 40, 'c1': 60}
Python Dictionary Methods
Python 包含以下词典方法 −
Sr.No. |
Methods with Description |
1 |
dict.clear() 移除词典 |
2 |
dict.copy() 返回词典 |
3 |
dict.fromkeys() 使用 |
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) 如果字典 dict 中有 key,则返回真,否则返回假 |
6 |
dict.items() 返回字典 (key, value) 元组对的列表 |
7 |
dict.keys() 返回字典 dict 的 key 列表 |
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) 将字典 dict2 的键值对添加到 dict |
10 |
dict.values() 返回字典 dict 的 value 列表 |
Built-in Functions with Dictionaries
以下是我们可以用于字典的内置函数 −
Sr.No. |
Function with Description |
1 |
cmp(dict1, dict2) 比较两个字典 dict 中的元素。 |
2 |
len(dict) 给出字典的总长度。这等于字典中的项目数。 |
3 |
str(dict) 生成字典的可打印字符串表示形式 |
4 |
type(variable) 返回传递变量的类型。如果传递的变量是字典,则返回字典类型。 |