连接嵌套字典中的字符串

时间:2019-07-01 10:55:56

标签: python python-3.x

我的字典为d以下:

{
 1: {1: {'text': 'Contact', 'x0': Decimal('223.560')}},
 2: {1: {'text': 'My email', 'x0': Decimal('223.560')},
     2: {'text': 'is', 'x0': Decimal('279.552')},
     3: {'text': 'domain@example.com', 'x0': Decimal('290.868')}
}

我正在尝试转变。每个字典对应于一行,每个嵌套字典对应于该行上的一个单词/一系列单词。

我正在尝试对其进行转换,以便每个字典等于一行-单词串联在一起,并且键更改为row

预期输出:

 1: {'row': 'Contact'},
 2: {'row': 'My email is domain@example.com'}

我不确定该怎么做?谁能指导我进行正确的更正?

2 个答案:

答案 0 :(得分:2)

看起来像您需要的。

from decimal import Decimal
d = {
 1: {1: {'text': 'Contact', 'x0': Decimal('223.560')}},
 2: {1: {'text': 'My email', 'x0': Decimal('223.560')},
     2: {'text': 'is', 'x0': Decimal('279.552')},
     3: {'text': 'domain@example.com', 'x0': Decimal('290.868')}
    }
}

result = {}
for k, v in d.items():
    result[k] = {"row": " ".join(n["text"] for _, n in v.items())}       
print(result)

输出:

{1: {'row': 'Contact'}, 2: {'row': 'My email is domain@example.com'}}

答案 1 :(得分:0)

您可以使用简单的列表理解:

d = {1: {1: {'text': 'Contact', 'x0': Decimal('223.560')}}, 2: {1: {'text': 'My email', 'x0': Decimal('223.560')}, 2: {'text': 'is', 'x0': Decimal('279.552')}, 3: {'text': 'domain@example.com', 'x0': Decimal('290.868')}}} 
new_d = {a:{'row':' '.join(i['text'] for i in b.values())} for a, b in d.items()}

输出:

{1: {'row': 'Contact'}, 2: {'row': 'My email is domain@example.com'}}