5

ディクショナリの値であるセットに値を追加する際に問題があります。リストなどではなく、値としてセットを使用する必要があります。このスレッドを見たことがありますが、完全には答えられません。

from collections import defaultdict
datoteka = open("vzorec.list","rt")
slovar = defaultdict(set)

for vrstica in datoteka:
    seznam = vrstica.split("\t")
    naslov = seznam[0]
    beseda = seznam[len(seznam)-1]
    beseda = beseda.strip()
    naslov2 = ""
    for crka in naslov:
        if crka == "(":
            break
        else:
            naslov2 = naslov2 + crka
    naslov = naslov2.lstrip('"')

    if naslov not in slovar:
        slovar[naslov] = set(beseda)

    elif naslov in slovar:
        slovar[naslov] = slovar[naslov].add(beseda)



print(slovar)

文字列型に add 関数がないというエラーが表示されます。しかし、なぜPythonは、セットを値として持ちたいのかを理解していません。私も使用しましたdefaultdict

4

2 に答える 2

8

あなたはただ欲しい:

slovar[naslov].add(beseda)

それ以外の:

if naslov not in slovar:
    slovar[naslov] = set(beseda) # set of characters in beseda string ???

elif naslov in slovar:
    slovar[naslov] = slovar[naslov].add(beseda) # add to the set, returns None ???

これが機能するのdefaultdictは、キーが存在しない場合、空のセットをその特定のキーに値として追加し、空のセットを返すためです。したがって、最初slovar[naslov]は空のセットを返します.add(beseda)

于 2012-08-21T12:59:06.553 に答える
5

Pythonはうまく理解します:)。コードにバグがあります。

set.addセットを変更して を返すNoneため、セットを破棄してキーを に設定しましたNoneslovar[naslov].add(beseda)セットに含まれているかどうかを確認するだけnaslovで、戻り値は気にしません。

文字列がどのようにそこに入るのかわからないので、それで問題が解決しない場合は、完全なトレースバックを貼り付ける必要があります。

于 2012-08-21T12:58:47.723 に答える