Python 将嵌套的dict项合并为字符串
下面是嵌套的dictPython 将嵌套的dict项合并为字符串,python,python-3.x,Python,Python 3.x,下面是嵌套的dictd: { 1:{1:{'text':'Contact','x0':十进制('21.600')}, 2:{1:{'text':'我的邮件是','x0':十进制('21.600')}, 2:{'text':'domain@example.com','x0':十进制('223.560')} } 我试图将每个顶级键的嵌套字典“组合”成一个字符串(应该形成一个句子)。例如: 1: Contact 2: My mail is domain@example.com 所以我对如何在Pyt
d
:
{
1:{1:{'text':'Contact','x0':十进制('21.600')},
2:{1:{'text':'我的邮件是','x0':十进制('21.600')},
2:{'text':'domain@example.com','x0':十进制('223.560')}
}
我试图将每个顶级键的嵌套字典“组合”成一个字符串(应该形成一个句子)。例如:
1: Contact
2: My mail is domain@example.com
所以我对如何在Python中实现这一点有点怀疑。这就是我目前拥有的:
对于d中的行:
对于单词_no,d[行]中的文本。项()
打印(文本['text'])
这会打印每个
文本
字符串,但不会组合任何内容。有人能给我指引正确的方向吗?你只需要再迭代一次
Ex:
from decimal import Decimal
d = {
1: {1: {'text': 'Contact', 'x0': Decimal('21.600')}},
2: {1: {'text': 'My mail is', 'x0': Decimal('21.600')},
2: {'text': 'domain@example.com', 'x0': Decimal('223.560')}}
}
for k, v in d.items():
print("{}: {}".format(k, " ".join(n["text"] for _, n in v.items()))) #Combine "text"
1: Contact
2: My mail is domain@example.com
1: Contact
2: My mail is domain@example.com
输出:
from decimal import Decimal
d = {
1: {1: {'text': 'Contact', 'x0': Decimal('21.600')}},
2: {1: {'text': 'My mail is', 'x0': Decimal('21.600')},
2: {'text': 'domain@example.com', 'x0': Decimal('223.560')}}
}
for k, v in d.items():
print("{}: {}".format(k, " ".join(n["text"] for _, n in v.items()))) #Combine "text"
1: Contact
2: My mail is domain@example.com
1: Contact
2: My mail is domain@example.com
试试这个
>>> from decimal import Decimal
>>> d = {
1: {1: {'text': 'Contact', 'x0': Decimal('21.600')}},
2: {1: {'text': 'My mail is', 'x0': Decimal('21.600')},
2: {'text': 'domain@example.com', 'x0': Decimal('223.560')}}
}
>>> for k,v in d.items():
s = ""
for ik,iv in v.items():
s+=" "+iv['text']
print("{}: {}".format(k,s))
输出:
from decimal import Decimal
d = {
1: {1: {'text': 'Contact', 'x0': Decimal('21.600')}},
2: {1: {'text': 'My mail is', 'x0': Decimal('21.600')},
2: {'text': 'domain@example.com', 'x0': Decimal('223.560')}}
}
for k, v in d.items():
print("{}: {}".format(k, " ".join(n["text"] for _, n in v.items()))) #Combine "text"
1: Contact
2: My mail is domain@example.com
1: Contact
2: My mail is domain@example.com
字典中的键对和值对没有任何特定顺序。 如果句子/单词的顺序很重要,则必须按键对dict值进行排序(使用)。 要连接字符串,请使用带有子字符串列表的函数作为参数 这是使用列表连接的简化版本:
for i in sorted(d.keys()):
print '%s: %s' % (i, ' '.join([d[i][u]['text'] for u in sorted(d[i].keys())]))
这是一个更详细的版本:
for i in sorted(d.keys()):
texts = []
for u in sorted(d[i].keys()):
texts.append(d[i][u]['text'])
print '%s: %s' % (i, ' '.join(texts))
这很好用!我正在尝试学习Python-您是否介意解释一下(非常简短),这是一个内联循环吗?这是一个内联循环吗。我用
\uu
作为键,因为它在任何地方都没有被使用。这一点很好!如果dict已经排序,在上面的循环中迭代之前,我是否需要再次对其排序?如果不进行排序,无法保证结果是正确的。您可能会得到结果”domain@example.com我的邮件是”。我不知道,我是否正确地理解了你的问题。第一次迭代是排序“主”字典,嵌套排序是排序子字典。在处理之前,不能创建已排序的词典。