Python 插入一行中带有for循环的列表中的多个键-dict.setdefault
我试着这样做:Python 插入一行中带有for循环的列表中的多个键-dict.setdefault,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我试着这样做: ip_dict = dict() ip_list = ["10.0.0.1", "10.0.0.2"] ip_dict.dict.setdefault(i for i in ip_list, 0) 我得到一个例外: File "<stdin>", line 1 SyntaxError: Generator expression must be parenthesized if not sole argument 文件“”,第1行 SyntaxError:如果不
ip_dict = dict()
ip_list = ["10.0.0.1", "10.0.0.2"]
ip_dict.dict.setdefault(i for i in ip_list, 0)
我得到一个例外:
File "<stdin>", line 1
SyntaxError: Generator expression must be parenthesized if not sole argument
文件“”,第1行
SyntaxError:如果不是唯一参数,则必须将生成器表达式括起来
我可以在一行中完成,还是必须在两行中完成?您可以将带有一行主体的for循环挤压成一行:
ip_dict = dict()
ip_list = ["10.0.0.1", "10.0.0.2"]
for i in ip_list: ip_dict.setdefault(i, 0)
但是,如果您真的想得到代码的效果,那么只需要:
ip_list = ["10.0.0.1", "10.0.0.2"]
ip_dict = dict.fromkeys(ip_list, 0)
您可以使用听写理解:
ip_list = ["10.0.0.1", "10.0.0.2"]
ip_dict = {k:0 for k in ip_list}
对于一个更完整的示例,如果您有一个默认值列表
ip_list = ["10.0.0.1", "10.0.0.2"]
ip_default = [0, 1]
ip_dict = {k: v for k, v in zip(ip_list, ip_default)}
ip_列表中的i的
i与ip_列表
相同。现在是下一个错误。我知道它的作用,我只是给了一个简单的例子here@Pythonset default不使用生成器作为参数,这将创建一个dict,其中生成器是它的一个键,值为0Mr python,如果您的问题得到解决,并且您选择了一个有帮助的答案,您可以投票支持它们,但是,为了让您和应答者获得声誉,您应该单击所选答案中的复选标记。我见过很多人因为不检查而浪费自己和他人的声誉answers@Python:不要实际使用第一个…如果您的dict不是空的,这就是为什么您需要setdefault
,只需将循环放在两行上即可。在同一条线上阅读会让阅读变得更困难,而且毫无益处。我想在没有空白的听写上阅读。好的,谢谢你的帮助