Python–将嵌套字典转换为映射元组
原文:https://www . geesforgeks . org/python-convert-nested-dictionary-to-mapped-tuple/
有时,在使用 Python 字典时,我们可能会遇到一个问题,即我们需要将嵌套字典转换为映射元组。这种问题可能发生在网页开发和日常编程中。让我们讨论执行这项任务的某些方法。
输入 : test_dict = {'gfg' : {'x' : 5,' y' : 6,' z': 3},' best' : {'x' : 8,' y' : 3,' z': 5}} 输出 : [('x ',(5,8)),(' y ',(6,3)),(' z ',(3,5))]
输入 : test_dict = {'gfg' : {'x' : 5,' y' : 6,' z': 3}} 输出 : [('x ',(5),),(' y ',(6),),(' z ',(3,)]
方法#1:使用列表理解+生成器表达式 以上函数的组合可以用来解决这个问题。在本文中,我们使用列表理解来执行创建元组的任务,生成器表达式通过使用 values()提取值来帮助分组。
# Python3 code to demonstrate working of
# Convert Nested dictionary to Mapped Tuple
# Using list comprehension + generator expression
# initializing dictionary
test_dict = {'gfg' : {'x' : 5, 'y' : 6}, 'is' : {'x' : 1, 'y' : 4},
'best' : {'x' : 8, 'y' : 3}}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Convert Nested dictionary to Mapped Tuple
# Using list comprehension + generator expression
res = [(key, tuple(sub[key] for sub in test_dict.values()))
for key in test_dict['gfg']]
# printing result
print("The grouped dictionary : " + str(res))
Output :
原始字典为:{'gfg': {'x': 5,' y': 6},' is': {'x': 1,' y': 4},' best': {'x': 8,' y': 3}} 分组字典:[('x ',(5,1,8)),(' y ',(6,4,3))]
方法 2:使用defaultdict()
+循环
这是可以执行该任务的另一种方式。在本文中,我们使用 defaultdict()执行嵌套字典的键的映射任务,并使用循环重新创建值列表。这种方法对于旧版本的 Python 很有用。
# Python3 code to demonstrate working of
# Convert Nested dictionary to Mapped Tuple
# Using defaultdict() + loop
from collections import defaultdict
# initializing dictionary
test_dict = {'gfg' : {'x' : 5, 'y' : 6}, 'is' : {'x' : 1, 'y' : 4},
'best' : {'x' : 8, 'y' : 3}}
# printing original dictionary
print("The original dictionary is : " + str(test_dict))
# Convert Nested dictionary to Mapped Tuple
# Using defaultdict() + loop
res = defaultdict(tuple)
for key, val in test_dict.items():
for ele in val:
res[ele] += (val[ele], )
# printing result
print("The grouped dictionary : " + str(list(res.items()))
Output :
原始字典为:{'gfg': {'x': 5,' y': 6},' is': {'x': 1,' y': 4},' best': {'x': 8,' y': 3}} 分组字典:[('x ',(5,1,8)),(' y ',(6,4,3))]
版权属于:月萌API www.moonapi.com,转载请注明出处