有时,在使用字典时,我们可能会遇到一个问题,需要将字符串转换为嵌套字典,每个分隔符的出现都意味着一个新的嵌套。这是一个特殊问题,但可能会发生在数据域和日常编程中。让我们讨论一下完成这项任务的具体方式。
方法:使用循环+递归这是执行此任务的方式。在此,当遇到分隔符时,我们会重复字典的嵌套。
Python3# Python3 code to demonstrate working of
# Convert String to Nested Dictionaries
# Using loop
def helper_fnc(test_str, sep):
if sep not in test_str:
return test_str
key, val = test_str.split(sep, 1)
return {key: helper_fnc(val, sep)}
# initializing string
test_str = 'gfg_is_best_for_geeks'
# printing original string
print("The original string is : " + str(test_str))
# initializing separator
sep = '_'
# Convert String to Nested Dictionaries
# Using loop
res = helper_fnc(test_str, sep)
# printing result
print("The nested dictionary is : " + str(res))
输出
The original string is : gfg_is_best_for_geeks The nested dictionary is : {'gfg': {'is': {'best': {'for': 'geeks'}}}}
使用堆栈:
方法:
我们还可以使用堆栈将字符串转换为嵌套字典。我们将把字符串分割成一个键列表,并使用堆栈来跟踪当前的字典。我们将遍历键列表并将每个键压入堆栈。如果下一个键是最后一个键,我们会将当前字典的值设置为最后一个键。否则,我们将创建一个新字典并将当前字典的值设置为新字典。然后我们将新字典压入堆栈并使其成为当前字典。
Python3def convert_to_dict(string):
keys = string.split('_')
stack = []
current_dict = {}
for key in keys:
if len(stack) == len(keys) - 1:
stack[-1][prev_key] = key
else:
new_dict = {}
current_dict[key] = new_dict
stack.append(current_dict)
current_dict = new_dict
prev_key = key
return stack[0]
string = 'gfg_is_best_for_geeks'
result = convert_to_dict(string)
print(result)
输出
{'gfg': {'is': {'best': {'for': 'geeks'}}}}
时间复杂度:O(n)
辅助空间:O(n)
相关用法
- Python String转Set用法及代码示例
- Python String转Long用法及代码示例
- Python String转Float用法及代码示例
- Python String转Binary用法及代码示例
- Python String转bytes用法及代码示例
- Python String转Tuple用法及代码示例
- Python String format()用法及代码示例
- Python String capitalize()用法及代码示例
- Python String center()用法及代码示例
- Python String casefold()用法及代码示例
- Python String count()用法及代码示例
- Python String endswith()用法及代码示例
- Python String expandtabs()用法及代码示例
- Python String encode()用法及代码示例
- Python String find()用法及代码示例
- Python String index()用法及代码示例
- Python String isalnum()用法及代码示例
- Python String isalpha()用法及代码示例
- Python String isdecimal()用法及代码示例
- Python String isdigit()用法及代码示例
- Python String isidentifier()用法及代码示例
- Python String islower()用法及代码示例
- Python String isnumeric()用法及代码示例
- Python String isprintable()用法及代码示例
- Python String isspace()用法及代码示例
注:本文由纯净天空筛选整理自manjeet_04大神的英文原创作品 Python – Convert String to Nested Dictionaries。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。