Python 将嵌套字典转换为映射元组
嵌套字典是一种层次结构的数据结构,其中值本身被称为字典。它允许在基本字典内存储多个字典。映射元组由一组包含配对值的元组定义。通过将一种形式转换为另一种形式,意味着将键值对之间的更改设置为元组列表。在Python中,我们将使用一些内置函数,如isintance(),extend(),append()和str(),将嵌套字典转换为映射元组。
语法
示例中使用以下语法-
isintance()
isinstance()是Python中的一个内置函数,用于检查第一个参数是否是第二个参数的子类或实例。
extend()
extend() 是Python中的一个内建方法,它在当前列表的末尾添加指定的元素。
append()
append()是Python中的一个内置方法,它接受一个元素作为输入参数,并将其添加到给定列表的末尾。
str()
内置函数str()的定义是通过将参数值转换为value形式。
使用递归
在下面的例子中,程序使用递归函数来管理一些内置函数extend()和append(),这些函数将嵌套字典转换为映射元组。
示例
def dict_mapped_tup(dictionary):
map_tuple = []
for key, value in dictionary.items():
if isinstance(value, dict):
map_tuple.extend((key, subkey, subvalue) for subkey, subvalue in dict_mapped_tup(value))
else:
map_tuple.append((key, value))
return map_tuple
# Create the nested dictionary
nes_dict = {
"key 1": "50",
"key 2": {
"subkey 1": "10",
"subkey 2": "20"
},
"key 3": "60"
}
# Calling function
mapped_tup = dict_mapped_tup(nes_dict)
print(mapped_tup)
输出结果
[('key 1', '50'), ('key 2', 'subkey 1', '10'), ('key 2', 'subkey 2', '20'), ('key 3', '60')]
使用递归生成器和isinstance()
在下面的例子中,程序使用了作为常规函数的递归生成器,也就是说函数在调用自身。然后使用内置函数isinstance(),它接受两个参数来检查第一个参数是否是第二个参数的子类。
示例
def dict_mapped_tup(dictionary):
for key, value in dictionary.items():
if isinstance(value, dict):
yield from ((key,) + subkey_value for subkey_value in dict_mapped_tup(value))
else:
yield key, value
# Create the nested dictionary
nested_dict = {
"key1": "100",
"key2": {
"subkey1": "200",
"subkey2": "300",
"subkey3": "400"
},
"key3": "500"
}
# Calling function
map_tuple = list(dict_mapped_tup(nested_dict))
print(map_tuple)
输出
[('key1', '100'), ('key2', 'subkey1', '200'), ('key2', 'subkey2', '300'), ('key2', 'subkey3', '400'), ('key3', '500')]
使用字典操作
在下面的例子中,程序使用字典操作通过列表、元组和for循环来遍历给定的列表并将嵌套字典转换为映射元组。
示例
# Create the nested dictionary
my_dict = {'Tutorials' : {'x' : 10, 'y' : 20}, 'is' : {'x' : 100, 'y' : 400}, 'good' : {'x' : 80, 'y' : 63}}
# Display the original dictionary
print("Original Dictionary: " + str(my_dict))
# Using dictionary operation
result = [(key, tuple(my_dict[k][key] for k in my_dict)) for key in my_dict['Tutorials']]
# Display the output
print("The Combined dictionary: " + str(result))
输出
Original Dictionary: {'Tutorials': {'x': 10, 'y': 20}, 'is': {'x': 100, 'y': 400}, 'good': {'x': 80, 'y': 63}}
The Combined dictionary: [('x', (10, 100, 80)), ('y', (20, 400, 63))]
结论
我们讨论了解决这个问题陈述的各种方法。上面的两个例子使用递归函数,这意味着函数调用自身,而第三个例子则展示了使用列表和元组的字典操作。这种类型的代码有助于根据数据的排列来构建逻辑。