有时,在使用字典时,我们可能需要执行将字典转换为字符串(连接键值对)的任务。这可以应用于需要减少存储空间或需要字符串作为目标数据的领域。让我们讨论执行此任务的某些方法。
方法一:使用空字符串+for循环
在此方法中,我们将使用 for 循环来迭代字典对象,并继续将键:值对添加到空字符串中。
Python3
# Python3 code to demonstrate working of
# Convert Dictionary to Concatenated String
# Using an empty string + for loop
# initializing dictionary
test_dict = {'gfg': 1, 'is': 2, 'best': 3}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Create an empty string
res = ' '
# Convert Dictionary to Concatenated String
# Using for loop and empty string
for item in test_dict:
res += item + str(test_dict[item])
# printing result
print("The dictionary after concatenation is : " + str(res))
The original dictionary is : {'gfg': 1, 'is': 2, 'best': 3} The dictionary after concatenation is : gfg1is2best3
方法二:使用join() + items()
可以使用以上函数的组合来解决这个问题。在此,我们需要使用join()执行连接任务,并使用items()完成字典项的提取。
Python3
# Python3 code to demonstrate working of
# Convert Dictionary to Concatenated String
# Using join() + items()
# initializing dictionary
test_dict = {'gfg' : 1, 'is' : 2, 'best' : 3}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Convert Dictionary to Concatenated String
# Using join() + items()
res = ''.join(key + str(val) for key, val in test_dict.items())
# printing result
print("The dictionary after concatenation is : " + str(res))
The original dictionary is : {'gfg': 1, 'is': 2, 'best': 3} The dictionary after concatenation is : gfg1is2best3
方法3:使用reduce() + lambda
上述函数的组合可用于执行此任务。在此,我们使用 reduce() 和 lambda 的组合执行串联任务。
Python3
# Python3 code to demonstrate working of
# Convert Dictionary to Concatenated String
# Using reduce() + lambda
from functools import reduce
# initializing dictionary
test_dict = {'gfg' : 1, 'is' : 2, 'best' : 3}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Convert Dictionary to Concatenated String
# Using reduce() + lambda
res = reduce(lambda key, val : key + str(val[0]) + str(val[1]), test_dict.items(), '')
# printing result
print("The dictionary after concatenation is : " + str(res))
The original dictionary is : {'gfg': 1, 'is': 2, 'best': 3} The dictionary after concatenation is : gfg1is2best3
方法#4:将列表理解与 zip() 函数结合使用
脚步:
- 定义输入字典
- 使用 zip() 函数并行迭代字典的键和值。
- 使用列表理解通过 + 运算符和 str() 函数将每个键值对连接成一个字符串。
- 使用 join() 方法连接结果字符串列表。
- 打印连接的字符串。
Python3
# Define the input dictionary
my_dict = {'gfg': 1, 'is': 2, 'best': 3}
# Convert dictionary to concatenated string using a list comprehension with zip() function
concatenated_string = ''.join([str(x) + str(y) for x, y in zip(my_dict.keys(), my_dict.values())])
# Print the concatenated string
print("The dictionary after concatenation is : ", concatenated_string)
The dictionary after concatenation is : gfg1is2best3
时间复杂度:O(n)。此方法中的 zip() 函数的时间复杂度为 O(n),其中 n 是字典中的项目数。列表推导式的时间复杂度为 O(n),其中 n 是字典中的项目数。 join() 方法的时间复杂度为 O(n),其中 n 是结果字符串的长度。
辅助空间:O(n)。此方法使用列表理解创建字符串列表,其空间复杂度为 O(n),其中 n 是字典中的项目数。 join() 方法还会创建一个新的字符串对象,其空间复杂度为 O(n),其中 n 是结果字符串的长度。
方法 5:使用map() 函数
方法:
使用 map() 函数和 lambda 函数将键和值连接成单个字符串,然后使用 join() 方法将结果列表连接成单个字符串。
脚步:
- 创建字典。
- 使用 map() 函数和 lambda 函数将每个键和值对连接成单个字符串。
- 将生成的Map对象转换为列表。
- 使用 join() 方法将列表中的字符串连接成单个字符串。
- 返回最终的连接字符串。
Python3
# Initializing dictionary
my_dict = {'gfg': 1, 'is': 2, 'best': 3}
# Concatenate keys and values into a list
# using map() with a lambda function
result_list = list(map(lambda x: x[0] + str(x[1]), my_dict.items()))
# Concatenating the list items into a single string
result = "".join(result_list)
# Printing answer
print(result)
gfg1is2best3
时间复杂度:O(n),其中 n 是字典中的项目数。 map()函数、列表转换和join()方法的时间复杂度均为O(n),因此总体时间复杂度为O(n)。
辅助空间:O(n),其中 n 是字典中的项目数。 map() 函数创建一个需要 O(n) 空间的映射对象,并且生成的列表也需要 O(n) 空间。最终的连接字符串也需要 O(n) 空间。所以整体的空间复杂度是O(n)。
方法6:使用re.sub()方法
直觉:我们使用 re.sub() 函数从给定字典的字符串表示形式中删除所有非字母数字字符。
脚步:
- 导入 re 模块。
- 定义一个字典my_dict。
- 使用str()函数将字典转换为字符串。
- 将 re.sub() 函数应用于正则表达式模式 r'\W+' 的字符串,以删除所有非单词字符。
- 将结果字符串存储在变量 result 中。
- 打印结果的值。
Python3
import re
# Initializing list
my_dict = {'gfg': 1, 'is': 2, 'best': 3}
result = re.sub(r'\W+', '', str(my_dict))
# Printing answer
print(result)
gfg1is2best3
时间复杂度:O(N),其中 n 是结果字符串的长度。这是因为 re.sub() 函数会遍历字符串中的每个字符一次。
辅助空间:O(N),其中 n 是结果字符串的长度。这是因为我们创建了一个仅包含字母数字字符的新字符串。
方法 7:使用生成器表达式 + join 函数
脚步:
- 使用生成器表达式来迭代字典中的键值对,并使用字符串连接将它们连接起来。
- 将生成器表达式传递给 join 函数以将连接的字符串连接成单个字符串。
- 打印最终的连接字符串。
Python3
# Iniializing dictionary
my_dict = {'gfg': 1, 'is': 2, 'best': 3}
# Concatenate keys and values into a single string
# using generator expression and join function
result = "".join(key + str(value) for key, value in my_dict.items())
# Pinting answer
print(result)
gfg1is2best3
该方法的时间复杂度为O(n),其中n是字典中键值对的数量。
使用的辅助空间为 O(n),其中 n 是最终连接字符串的长度。
相关用法
- Python Dictionary转List用法及代码示例
- Python Dictionary clear()用法及代码示例
- Python Dictionary copy()用法及代码示例
- Python Dictionary fromkeys()用法及代码示例
- Python Dictionary get()用法及代码示例
- Python Dictionary items()用法及代码示例
- Python Dictionary keys()用法及代码示例
- Python Dictionary popitem()用法及代码示例
- Python Dictionary setdefault()用法及代码示例
- Python Dictionary pop()用法及代码示例
- Python Dictionary values()用法及代码示例
- Python Dictionary update()用法及代码示例
- Python Dictionary has_key()用法及代码示例
- Python Dictionary clear方法用法及代码示例
- Python Dictionary pop方法用法及代码示例
- Python Dictionary values方法用法及代码示例
- Python Dictionary fromkeys方法用法及代码示例
- Python Dictionary get方法用法及代码示例
- Python Dictionary update方法用法及代码示例
- Python Dictionary popitem方法用法及代码示例
- Python Dictionary copy方法用法及代码示例
- Python Dictionary setdefault方法用法及代码示例
- Python Dictionary items方法用法及代码示例
- Python Dictionary keys方法用法及代码示例
- Python Decimal same_quantum()用法及代码示例
注:本文由纯净天空筛选整理自manjeet_04大神的英文原创作品 Python – Convert Dictionary to Concatenated String。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。