【发布时间】:2013-07-07 01:37:58
【问题描述】:
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 语句被忽略了。任何指针? 谢谢
【问题讨论】:
-
一旦你有两个
for循环和一个if语句在一个 dict 理解中,考虑将它分成几行。 -
您通过不为其分配名称来丢弃您的 dict 理解的结果,并且您正在改变您现有的 dict 作为理解的一部分。最重要的是,您已命名变量
dict,这本身就令人困惑。几乎就好像你已经尝试以最迟钝的方式来写它。使用更好的变量名,不要试图将其全部写在一行中。
标签: python dictionary python-3.x list-comprehension if-statement