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 に答える