Python 字典

Python 字典用于以键值对格式存储数据。字典是 Python 中的数据类型,它可以模拟现实生活中的数据排列,其中某个特定的键存在某个特定的值。它是可变的数据结构。字典被定义为元素键和值。

  • 键必须是单个元素

  • 值可以是任何类型,如列表、元组、整数等。

换句话说,我们可以说字典是键值对的集合,其中的值可以是任何 Python 对象。相反,键是不可变的 Python 对象,即数字、字符串或元组。

创建字典

字典可以通过使用用花括号{}括起来的多个键值对来创建,每个键都用冒号(:)与其值分开。下面给出了定义字典的语法。

语法:

Dict = {"Name": "Tom", "Age": 22}  

在上面的字典 Dict 中,键名称年龄是不可变对象的字符串。

让我们看一个创建字典并打印其内容的例子。

Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}  
print(type(Employee))
print("printing Employee data .... ")
print(Employee)

输出

<class 'dict'>
Printing Employee data ....
{'Name': 'John', 'Age': 29, 'salary': 25000, 'Company': 'GOOGLE'}

Python 提供了内置函数 dict() 方法,也是用来创建字典的。空花括号{}用于创建空字典。

# Creating an empty Dictionary 
Dict = {}
print("Empty Dictionary: ")
print(Dict)

# Creating a Dictionary
# with dict() method
Dict = dict({1: 'Java', 2: 'T', 3:'Point'})
print("\nCreate Dictionary by using dict(): ")
print(Dict)

# Creating a Dictionary
# with each item as a Pair
Dict = dict([(1, 'Devansh'), (2, 'Sharma')])
print("\nDictionary with each item as a pair: ")
print(Dict)

输出:

Empty Dictionary: 
{}

Create Dictionary by using dict():
{1: 'Java', 2: 'T', 3: 'Point'}

Dictionary with each item as a pair:
{1: 'Devansh', 2: 'Sharma'}

访问字典值

我们已经讨论了如何使用索引在列表和元组中访问数据。

但是,可以通过使用键来访问字典中的值,因为键在字典中是唯一的。

字典值可以通过以下方式访问。

Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}
print(type(Employee))
print("printing Employee data .... ")
print("Name : %s" %Employee["Name"])
print("Age : %d" %Employee["Age"])
print("Salary : %d" %Employee["salary"])
print("Company : %s" %Employee["Company"])

输出:

<class 'dict'>
printing Employee data ....
Name : John
Age : 29
Salary : 25000
Company : GOOGLE

Python 为我们提供了一种使用 get()方法访问字典值的替代方法。它会给出与索引相同的结果。

添加字典值

字典是一种可变的数据类型,它的值可以通过使用特定的键来更新。该值可随键 Dict[key]=value一起更新。update()方法也用于更新现有值。

注意:如果键值已经存在于字典中,该值将被更新。否则,在字典中添加新的键。

让我们看一个更新字典值的例子。

示例- 1:

# Creating an empty Dictionary 
Dict = {}
print("Empty Dictionary: ")
print(Dict)

# Adding elements to dictionary one at a time
Dict[0] = 'Peter'
Dict[2] = 'Joseph'
Dict[3] = 'Ricky'
print("\nDictionary after adding 3 elements: ")
print(Dict)

# Adding set of values
# with a single Key
# The Emp_ages doesn't exist to dictionary
Dict['Emp_ages'] = 20, 33, 24
print("\nDictionary after adding 3 elements: ")
print(Dict)

# Updating existing Key's Value
Dict[3] = 'JavaTpoint'
print("\nUpdated key value: ")
print(Dict)

输出:

Empty Dictionary: 
{}

Dictionary after adding 3 elements:
{0: 'Peter', 2: 'Joseph', 3: 'Ricky'}

Dictionary after adding 3 elements:
{0: 'Peter', 2: 'Joseph', 3: 'Ricky', 'Emp_ages': (20, 33, 24)}

Updated key value:
{0: 'Peter', 2: 'Joseph', 3: 'JavaTpoint', 'Emp_ages': (20, 33, 24)}

示例- 2:

Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}  
print(type(Employee))
print("printing Employee data .... ")
print(Employee)
print("Enter the details of the new employee....");
Employee["Name"] = input("Name: ");
Employee["Age"] = int(input("Age: "));
Employee["salary"] = int(input("Salary: "));
Employee["Company"] = input("Company:");
print("printing the new data");
print(Employee)

输出:

Empty Dictionary: 
{}

Dictionary after adding 3 elements:
{0: 'Peter', 2: 'Joseph', 3: 'Ricky'}

Dictionary after adding 3 elements:
{0: 'Peter', 2: 'Joseph', 3: 'Ricky', 'Emp_ages': (20, 33, 24)}

Updated key value:
{0: 'Peter', 2: 'Joseph', 3: 'JavaTpoint', 'Emp_ages': (20, 33, 24)}

使用 del 关键字删除元素

使用下面给出的 del 关键字可以删除字典中的项目。

Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}  
print(type(Employee))
print("printing Employee data .... ")
print(Employee)
print("Deleting some of the employee data")
del Employee["Name"]
del Employee["Company"]
print("printing the modified information ")
print(Employee)
print("Deleting the dictionary: Employee");
del Employee
print("Lets try to print it again ");
print(Employee)

输出:

<class 'dict'>
printing Employee data ....
{'Name': 'John', 'Age': 29, 'salary': 25000, 'Company': 'GOOGLE'}
Deleting some of the employee data
printing the modified information
{'Age': 29, 'salary': 25000}
Deleting the dictionary: Employee
Lets try to print it again
NameError: name 'Employee' is not defined

上面代码中的最后一个 print 语句,它引发了一个错误,因为我们试图打印已经删除的 Employee 字典。

  • 使用 pop()方法

pop() 方法接受键作为参数,并移除相关联的值。考虑下面的例子。

# Creating a Dictionary 
Dict = {1: 'JavaTpoint', 2: 'Peter', 3: 'Thomas'}
# Deleting a key
# using pop() method
pop_ele = Dict.pop(3)
print(Dict)

输出:

{1: 'JavaTpoint', 2: 'Peter'}

Python 还提供了一个内置的方法 popitem()和 clear()方法,用于从字典中移除元素。popitem()从字典中移除任意元素,而 clear()方法移除整个字典中的所有元素。

迭代字典

字典可以使用 for循环进行迭代,如下所示。

例 1

# for循环打印字典的所有键

Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}  
for x in Employee:
print(x)

输出:

Name
Age
salary
Company

例 2

#for循环打印字典的所有值

Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}  
for x in Employee:
print(Employee[x])

输出:

John
29
25000
GOOGLE

示例- 3

#for循环使用 values()方法打印字典的值。

Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}  
for x in Employee.values():
print(x)

输出:

John
29
25000
GOOGLE

例 4

#for循环使用 items()方法打印字典的项目。

Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE"}  
for x in Employee.items():
print(x)

输出:

('Name', 'John')
('Age', 29)
('salary', 25000)
('Company', 'GOOGLE')

字典键的属性

1.在字典中,我们不能为同一个键存储多个值。如果我们为一个键传递多个值,那么最后分配的值被认为是该键的值。

考虑下面的例子。

Employee={"Name":"John","Age":29,"Salary":25000,"Company":"GOOGLE","Name":"John"}  
for x,y in Employee.items():
print(x,y)

输出:

Name John
Age 29
Salary 25000
Company GOOGLE

2.在 python 中,键不能是任何可变对象。我们可以使用数字、字符串或元组作为关键字,但是我们不能使用任何像列表这样的可变对象作为字典中的关键字。

考虑下面的例子。

Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE",[100,201,301]:"Department ID"}  
for x,y in Employee.items():
print(x,y)

输出:

Traceback (most recent call last):
File "dictionary.py", line 1, in
Employee = {"Name": "John", "Age": 29, "salary":25000,"Company":"GOOGLE",[100,201,301]:"Department ID"}
TypeError: unhashable type: 'list'

内置字典功能

下面给出了内置的 python 字典方法以及描述。

功能描述
len(dict)它被用来计算字典的长度。
any(dict)与处理列表和元组的方式一样,如果一个字典键确实具有计算结果为 True 的布尔表达式,则 any() 方法确实会返回 True。
all(dict)与any()方法不同的是,all()只有在字典的每个键都包含一个True布尔值时才返回True。
sorted(dict)与列表和元组一样,sorted() 方法返回字典键的有序序列。升序排序对原始Python字典没有影响。

内置字典方法

下面给出了内置的 python 字典方法以及描述。

方法描述
dict.clear()它用于删除字典中的所有条目。
dict.copy()它返回字典的一个简单副本。
dict.from key(iterable,value= None,/)根据值等于值的可迭代表创建新字典。
dict.get(key,default=“none”)它用于获取为传递的键指定的值。
dict.has_key(key)如果字典包含指定的键,则返回 true。
dict.items()它以元组的形式返回所有键值对。
dict.key()它返回字典的所有键。
dict.setdefault(key,default =“None”)如果没有在字典中指定关键字,它用于将关键字设置为默认值
dict.update(dict2)它通过向字典中添加 dict2 的键值对来更新字典。
values()它返回字典的所有值。
len()长度
popitem()随机删除元素
pop()指定删除元素
count()计数
index()索引

原文:https://www.javatpoint.com/python-dictionary