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

我想创建一个字典,以便为所有单词(作为键)分配一个值,该值是单词出现的 dlist 的索引。例如,'All':{0,1}、'my':{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 语句被忽略了。任何指针?谢谢

4

1 回答 1

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)
于 2013-07-07T01:57:46.173 回答