if-else理解字典不能在python3中工作

时间:2013-07-07 01:37:59

标签: python dictionary python-3.x list-comprehension if-statement

dlist=['All my loving','All my bros','And all sis']

我想创建一个字典,以便为所有单词(作为键)分配一个值,该值是单词出现的dlist的索引。 例如, '全部':{0,1},'我的':{0,1},'sis'= {2}等。

不知怎的,这不起作用:

dict={}
{w:{num} if w not in dict.keys() else dict[w].add(num) for (num,strn) in enumerate(dlist) for w in strn.split()}

返回

{'All':{2}, 'my':{2}}

看起来else语句被忽略了。有什么指针吗? 感谢

1 个答案:

答案 0 :(得分:2)

这不起作用,因为您在dict理解中创建dict时尝试访问dict.keys。如果这是for循环,dict.keys将更新每个元素,但dict理解确保dict在创建过程中不会更新以提高速度。

这样的事情应该有效:

myDict = {}
for (num, strn) in enumerate(dlist):
    for w in strn.split():
        if w not in myDict:
            myDict[w] = {num}
        else:
            myDict[w].add(num)