Python 执行列表项字典的联接
我有一本dict[keyA][key1]形式的字典,其中“key1”是列表字典。i、 例如,keyA是一部列表词典词典。下面是如何创建词典的示例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': { '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'