Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 执行列表项字典的联接_Python_List_Dictionary_Join - Fatal编程技术网

Python 执行列表项字典的联接

Python 执行列表项字典的联接,python,list,dictionary,join,Python,List,Dictionary,Join,我有一本dict[keyA][key1]形式的字典,其中“key1”是列表字典。i、 例如,keyA是一部列表词典词典。下面是如何创建词典的示例 dict = { 'keyA': { 'keyA1': ['L1','L2',...], 'keyA2': ['L','L',...], ... }, 'keyB': { 'keyB1': ['L1','L2',...], 'key...': ['L','L',..], ...} } 我需要将列表的值连接在一起,并

我有一本dict[keyA][key1]形式的字典,其中“key1”是列表字典。i、 例如,keyA是一部列表词典词典。下面是如何创建词典的示例

dict = { 'keyA': { 'keyA1': ['L1','L2',...], 'keyA2': ['L','L',...], ... },
         'keyB': { 'keyB1': ['L1','L2',...], 'key...': ['L','L',..], ...}
         }
我需要将列表的值连接在一起,并希望使用如下构造:

newStr = ' A B C '.join(val for val in (dict[keyA][k] for k in dict[keyA]))
此操作失败,错误为val是“列表”而不是字符串

当我通过2 for循环解析val时,我会得到一个字符串列表,正如我期望上面提供的那样

用于外部字典中的一个条目并打印字符串列表的简单示例

for k in dict[keyA]:
    for val in dict[keyA][k]:
        print(val)
不起作用并打印“列表”的示例:

for val in (dict[keyA][k] for k in dict[keyA]): print(val)
上述测试失败的输出(注意输出中的括号)。如果我“键入”该值,则表明该值确实是一个列表: [‘一些文字’、‘更多文字’、…]

上面的工作嵌套“for”循环在不带括号的单独行上生成上述文本,其输出应在联接中工作,以提供所需的结果

有人能解释一下我在这里遗漏了什么吗?

您对“嵌套”理解的语法不太正确

如果你把第二部分分开,你会看到是什么绊倒了它:

>>> [_dict['keyA'][k] for k in _dict['keyA']]
[['L1', 'L2', 'L3'], ['Q1', 'Q2', 'Q3']]
嵌套理解(IMO)的顺序,从左到右按降序循环读取,而不是我认为大多数人最初假设的展开方式

在任何情况下,您只需调整您的理解:

>>> ' A B C '.join(val for key in _dict['keyA'] for val in _dict['keyA'][key])
'L1 A B C L2 A B C L3 A B C Q1 A B C Q2 A B C Q3'
或使用:

(注意:
\u
在这里用作占位符/一次性使用,因为在这种情况下实际上不需要“key”循环变量)


另外,请避免将其用作变量名,否则以后您将无法在代码中使用该内置名称。

非常有效,谢谢。你是对的,我使用嵌套的“for”引用“朝着错误的方向”工作。我在考虑从外到内的循环与通过代码流的流。。。但是,从它们如何分别“嵌套”和以这种方式“内联”的意义上讲,这是有意义的。
>>> ' A B C '.join(val for _, v in _dict['keyA'].items() for val in v)
'L1 A B C L2 A B C L3 A B C Q1 A B C Q2 A B C Q3'