在for循环中加入词典

时间:2015-09-16 19:20:34

标签: python dictionary

我有一个简单的for循环

    for m in my_list:
        x = my_function(m)
        my_dictionary = {m:x}

my_function()给了我一个字符串。如果我最后使用print my_dictionary,我会

   {m1: string1}
   {m2: string2}

我希望最后能有一本字典。 我尝试过在其他线程中找到的几种方法。 dic = dict(my_dictionary, **my_dictionary)

dic = my_dictionary.copy()
dic.update(my_dictionary)

但加班我只是得到最后一本字典而不是所有字典。 我希望我可以用+添加它们,但你不能在python中这样做

5 个答案:

答案 0 :(得分:3)

您可以使用dict comprehension创建主要词典:

dic = {m : my_function(m) for m in my_list}

答案 1 :(得分:1)

为什么要首先创建单独的词典?只需在每次迭代时在现有的dict中设置密钥。

my_dictionary = {}
for m in my_list:
    x = my_function(m)
    my_dictionary[m] = x

答案 2 :(得分:1)

也许我错过了一些东西,但是你想要一个简单的,非嵌套的字典并且你在循环中继续覆盖它不是你的问题吗?在这种情况下,这个小小的变化就足够了:

my_dictionary = {}
for m in my_list:
    x = my_function(m)
    my_dictionary[m] = x

答案 3 :(得分:1)

您可以更新字典,而不是每次都覆盖字典。

my_dictionary = {}
for m in my_list:
    x = my_function(m)
    my_dictionary.update({m:x})
print my_dictionary

答案 4 :(得分:1)

无需在每次循环迭代中重新创建新的字典。

您可以先创建词典,然后在迭代时向其中添加项目:

my_dict = {}
for m in my_list:
    my_dict[m] = my_function(m)

或者你可以使用词典理解:

my_dict = {m:my_function(m) for m in my_list}

或者,在python 2中:

my_dict = dict((m,my_function(m)) for m in my_list)