在本教程中,我们将讨论如何在 Python 中将元组转换为字典。
我们知道元组的元素包含在括号中,字典的元素以键值对的形式存在,并包含在花括号中。
我们将使用以下技术在 Python 中将元组转换为字典-
- 使用 setdefault()
- 使用 dict()
- 使用字典推导
- 使用 zip()和 dict()
让我们从第一个开始,
使用 setdefault()
setdefault()的功能是返回与某个键相关联的值,如果该键不存在,则会插入一个默认值。
下面的程序说明了如何在 Python 程序中使用它。
#creating a function
def convert_dict(tup, dic):
for i, j in tup:
dic.setdefault(i, []).append(j)
return dic
#initialising the tuple values
tuple_values = [("English", 2001), ("Hindi", 2002), ("Mathematics", 2003),
("Computer Science", 2004), ("Physics", 2005), ("Chemistry", 2006)]
res_dictionary = {}
#displaying the resultant dictionary
print ("The converted dictionary is: ", convert_dict(tuple_values,res_dictionary))
输出:
The converted dictionary is: {'English': [2001], 'Hindi': [2002], 'Mathematics': [2003], 'Computer Science': [2004], 'Physics': [2005], 'Chemistry': [2006]}
解释-
- 在第一步中,我们创建了一个以元组和字典为输入的函数。
- 之后,我们使用
for
循环使用 setdefault() 并追加主题名称和主题代码。 - 现在我们已经初始化了元组的值,并将结果字典声明为{}。
- 在执行上述程序时,会显示预期的输出。
在第二个程序中,我们将学习 dict()如何用于同样的目的。
使用 dict()
dict()用于在 Python 中创建字典,让我们看看它如何为我们的程序增加意义。
考虑下面给出的程序,
#creating a function
def convert_dict(tup, dic):
#use of dict()
dic = dict(tup)
return dic
#initialising the tuple values
tuple_values = [("English", 2001), ("Hindi", 2002), ("Mathematics", 2003),
("Computer Science", 2004), ("Physics", 2005), ("Chemistry", 2006)]
res_dictionary = {}
#displaying the resultant dictionary
print ("The converted dictionary is: ", convert_dict(tuple_values,res_dictionary))
输出:
The converted dictionary is: {'English': 2001, 'Hindi': 2002, 'Mathematics': 2003, 'Computer Science': 2004, 'Physics': 2005, 'Chemistry': 2006}
解释-
- 在第一步中,我们创建了一个以元组和字典为输入的函数。
- 在此之后,我们使用
for
循环来使用 dict(),它将元组作为参数并返回字典。 - 现在我们已经初始化了元组的值,并将结果字典声明为{}。
- 在执行上述程序时,会显示预期的输出。
在第三个节目中,我们将看到字典推导如何帮助我们。
使用字典推导
下面的程序显示了同样的情况,
#initialising the tuple values
sub_names = ('English', 'Hindi', 'Mathematics', 'Computer Science', 'Physics', 'Chemistry')
sub_codes = (2001, 2002, 2003, 2004, 2005, 2006)
#displaying the tuples
print("The values in sub_names are: ", sub_names)
print("The values in sub_codes are: ", sub_codes)
if len(sub_names) == len(sub_codes):
res_dict = {sub_names[i]: sub_codes[i] for i, _ in enumerate(sub_codes)}
#displaying the resultant dictionary
print("The resultant dictionary is: ", res_dict)
输出:
The values in sub_names are: ('English', 'Hindi', 'Mathematics', 'Computer Science', 'Physics', 'Chemistry')
The values in sub_codes are: (2001, 2002, 2003, 2004, 2005, 2006)
The resultant dictionary is: {'English': 2001, 'Hindi': 2002, 'Mathematics': 2003, 'Computer Science': 2004, 'Physics': 2005, 'Chemistry': 2006}
解释-
- 首先,我们初始化了两个元组,子名称和子代码,并显示它们。
- 此后,决策关键字 if 用于检查两个元组的长度是否相同,如果相同,则执行字典推导中定义的功能。
- 在执行给定程序时,会显示所需的输出。
在最后一个程序中,我们将学习如何在 Python 程序中使用 zip()和 dict()。
使用 zip()和 dict()
我们已经了解了 dict()是如何工作的,这里我们将应用 dict()和 zip(),zip()方法获取可迭代的项,并将它们附加到一起形成一个元组。
下面的程序说明了同样的情况-
#initialising the tuple values
sub_names = ('English', 'Hindi', 'Mathematics', 'Computer Science', 'Physics', 'Chemistry')
sub_codes = (2001, 2002, 2003, 2004, 2005, 2006)
#displaying the tuples
print("The values in sub_names are: ", sub_names)
print("The values in sub_codes are: ", sub_codes)
if len(sub_names) == len(sub_codes):
#using zip() and dict()
res_dict = dict(zip(sub_names, sub_codes))
#displaying the resultant dictionary
print("The resultant dictionary is: ", res_dict)
输出:
The values in sub_names are: ('English', 'Hindi', 'Mathematics', 'Computer Science', 'Physics', 'Chemistry')
The values in sub_codes are: (2001, 2002, 2003, 2004, 2005, 2006)
The resultant dictionary is: {'English': 2001, 'Hindi': 2002, 'Mathematics': 2003, 'Computer Science': 2004, 'Physics': 2005, 'Chemistry': 2006}
解释-
- 首先,我们初始化了两个元组,子名称和子代码,并显示它们。
- 此后,决策关键字 if 用于检查两个元组的长度是否相同,如果相同,则执行涉及 zip()和 dict()的功能。
- 在执行给定程序时,会显示所需的输出。
结论
在本教程中,我们学习了在 Python 中将元组转换为字典的不同方法。