我有一个简单的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中这样做
答案 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)