插入以从列表中dict列表中的多个键,并且一行中包含for循环-dict.setdefault

时间:2018-07-04 13:51:47

标签: 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

我可以一行执行此操作,还是必须两行执行?

2 个答案:

答案 0 :(得分:5)

您可以将单行主体的for循环压缩为一行:

ip_dict = dict()
ip_list = ["10.0.0.1", "10.0.0.2"]
for i in ip_list: ip_dict.setdefault(i, 0)

但是,如果您真的想要完全一样的代码效果,那么dict.fromkeys就足够了:

ip_list = ["10.0.0.1", "10.0.0.2"]
ip_dict = dict.fromkeys(ip_list, 0)

答案 1 :(得分:2)

您可以使用字典理解:

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)}