Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将嵌套的dict项合并为字符串_Python_Python 3.x - Fatal编程技术网

Python 将嵌套的dict项合并为字符串

Python 将嵌套的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

下面是嵌套的dict
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我的邮件是”。我不知道,我是否正确地理解了你的问题。第一次迭代是排序“主”字典,嵌套排序是排序子字典。在处理之前,不能创建已排序的词典。