Python 将字符串转换为字典
我们已经处理了基于字符串和字典的不同问题。在本教程中,我们将看到如何将字符串转换为Python中的字典。
在此之前,让我们快速回顾一下字符串和字典。
字符串被定义为一个字符序列,并使用单引号或双引号表示。
例如-
flower = 'Rose'
sub = 'Python'
name = 'James'
我们可以使用 type() 函数来检查上述变量的数据类型。
在Python中,字典被定义为一种使用键值对的数据结构,其用花括号括起来。
我们可以通过相应的键访问字典中的值。
字典的示例:
Subj = {'subj1': 'Computer Science', 'subj2': 'Physics', 'subj3': 'Chemistry', 'subj4': 'Mathematics'}
现在让我们列举出将字符串转换为字典的方法。
- 使用 loads()
- 使用 literal_eval()
- 使用生成器表达式
现在是详细讨论每种方法的时候了-
使用json.loads()
以下程序展示了如何使用json.loads()将字符串转换为字典的方法
#using json()
import json
#initialising the string
string_1 = '{"subj1":"Computer Science","subj2":"Physics","subj3":"Chemistry","subj4":"Mathematics"}'
print("String_1 is ",string_1)
#using json.loads()
res_dict=json.loads(string_1)
#printing converted dictionary
print("The resultant dictionary is ",res_dict)
输出:
String_1 is {"subj1":"Computer Science","subj2":"Physics","subj3":"Chemistry","subj4":"Mathematics"}
The resultant dictionary is {'subj1': 'Computer Science', 'subj2': 'Physics', 'subj3': 'Chemistry', 'subj4': 'Mathematics'}
说明:
让我们了解一下上面程序中做了什么-
- 在步骤1中,我们导入了json模块。
- 然后,我们初始化了想要转换的字符串。
- 现在我们只需将“string_1”作为参数传递给 loads()。
- 最后,在最后一步中,我们显示了结果字典。
使用ast.literal_eval()
现在我们将看到 ast.literal_eval 如何帮助我们达到目标。
以下程序演示了相同的过程-
#convert string to dictionary
#using ast()
import ast
#initialising the string
string_1 = '{"subj1":"Computer Science","subj2":"Physics","subj3":"Chemistry","subj4":"Mathematics"}'
print("String_1 is ",string_1)
#using ast.literal_eval
res_dict=ast.literal_eval(string_1)
#printing converted dictionary
print("The resultant dictionary is ",res_dict)
输出:
String_1 is {"subj1":"Computer Science","subj2":"Physics","subj3":"Chemistry","subj4":"Mathematics"}
The resultant dictionary is {'subj1': 'Computer Science', 'subj2': 'Physics', 'subj3': 'Chemistry', 'subj4': 'Mathematics'}
解释:
让我们了解一下上面程序中做了什么 –
- 在步骤1中,我们导入了ast模块。
- 然后,我们初始化了要转换的字符串。
- 现在,我们只需将’string_1’作为参数传递给 literal_eval()。
- 最后,在最后一步中,我们显示了生成的字典。
使用生成器表达式
最后,我们将讨论生成器表达式的使用方法。
让我们仔细研究给定的程序。
#convert string to dictionary
#using generator expressions
#initialising the string
string_1 = "subj1 - 10 , subj2 - 20, subj3 - 25, subj4 - 14"
print("String_1 is ",string_1)
#using strip() and split()
res_dict = dict((a.strip(), int(b.strip()))
for a, b in (element.split('-')
for element in string_1.split(', ')))
#printing converted dictionary
print("The resultant dictionary is: ", res_dict)
print(type(res_dict))
输出:
String_1 is subj1 - 10 , subj2 - 20, subj3 - 25, subj4 - 14
The resultant dictionary is: {'subj1': 10, 'subj2': 20, 'subj3': 25, 'subj4': 14}
<class 'dict'>
是时间来检查这种方法的解释了-
- 在步骤1中,我们声明了一个字符串,其中的值与连字符配对,并且每对之间用逗号分隔。这些信息很重要,因为它将成为获得所需输出的重要工具。
- 此外,我们在循环中使用 strip() 和 split() ,以便以通常的格式获得字典。
- 最后,我们打印了我们创建的字典,并使用 type() 验证了它的类型。
结论
在本教程中,我们探讨了将字符串转换为字典的方法。