繁体   English   中英

尝试进行字典理解时语法无效?

[英]invalid syntax when trying to make a dictionary comprehension?

test_list_k = ['a', 'b', 'c', 'd']

test_list_v = ['f', 'g', 'h']

test_dict_comp = {k: v for k in test_list_k and for v in test_list_v}
print(test_dict_comp)

由于某种原因,它将 test_dict_comp 中的第二个 for 视为无效语法。

假设目标是从test_list_v与来自test_list_k的值创建一个dict配对键,您想要的是zip (这将删除未配对的密钥)或itertools.zip_longest (这将允许您为未配对的密钥提供填充值) . 使用它的语法是:

test_dict_comp = {k: v for k, v in zip(test_list_k, test_list_v)}

或者对于这个简单的情况(没有进行过滤或转换,因此不需要理解),您可以直接将结果对的迭代器传递给dict构造函数:

test_dict_comp = dict(zip(test_list_k, test_list_v))

您的代码会中断,因为and是针对 boolean 测试的,它不能以您尝试的方式组合任意语句片段。 解析器正在尝试解析要在第一个 for 循环中迭代的值,并且当它到达test_list_k and for它会感到困惑(因为test_list_k and必须后跟另一个表达式以生成另一个要测试的值,如果test_list_k确定为真, for是关键字,而不是and ) 右侧的合法表达式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM