Python中的元组转字典

Python中的元组转字典

在本教程中,我们将讨论如何将元组转换为字典。

我们知道元组的元素被括在括号中,而字典的元素以键值对的形式存在,并被括在花括号中。

我们将使用以下技巧将元组转换为字典:

  1. 使用setdefault()
  2. 使用dict()
  3. 使用字典推导式
  4. 使用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]}

说明-

  1. 在步骤1中,我们创建了一个以元组和字典作为输入的函数。
  2. 然后,我们使用for循环来使用 setdefault() 并追加主题名称和主题代码。
  3. 现在,我们初始化了元组的值,并声明结果字典为{}。
  4. 在执行上面的程序后,会显示预期输出。

在第二个程序中,我们将学习如何使用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}

解释-

  1. 在步骤1中,我们创建了一个以元组和字典为输入的函数。
  2. 在此之后,我们使用for循环使用dict()函数,它以元组作为参数,并返回一个字典。
  3. 现在,我们初始化了元组的值,并声明了结果字典为{}。
  4. 在执行上述程序时,显示了预期的输出。

在第三个程序中,我们将看到字典推导如何帮助我们。

使用字典推导

下面的程序显示了相同的内容,

#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}

解释-

  1. 首先,我们初始化了两个元组sub_names和sub_codes,并显示它们。
  2. 在此之后,使用决策关键字if来检查两个元组的长度是否相同,如果相同,则执行在字典解析中定义的功能。
  3. 执行给定的程序后,将显示所需的输出。

在最后一个程序中,我们将学习如何在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}

解释-

  1. 首先,我们初始化了两个元组sub_names和sub_codes,并展示了它们。
  2. 在此之后,使用决策关键字if来检查两个元组的长度是否相同,如果相同,则执行涉及到zip()和dict()的功能。
  3. 执行给定的程序后,将显示所需的输出。

结论

在本教程中,我们学习了在Python中将元组转换为字典的不同方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程