我的字典为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'}
我不确定该怎么做?谁能指导我进行正确的更正?
答案 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'}}