2

私が持っているセットを使用して辞書を更新する必要があります。私のプログラムは、本質的にセットを取り、それを (辞書内の) 値に割り当てる必要があります。セットが既に存在する場合は、その値を更新する必要があります (値を一緒に追加し続けます)。

私のプログラムが今どのように機能するかは次のとおりです。

    for line in fd:
    new_line = line.split(' ')
    for word in new_line:
        new_word = ''.join(l for l in word if l.isalpha())
        new_word = new_word.lower()
        ind_count = 0
        for let in new_word:
            c_dict[let, ind_count] = new_word
            ind_count += 1

私のfdファイルには、単語のリストが含まれています。

結果は次のようになります。

print(c_dict)

{ (0, "h") : { "hello", "helps" } , (0, "c") : { "cow" } }

これは基本的に単語から文字を取得し、それはインデックス # であり、値をその単語に設定します。私のファイルには、位置 0 に文字 'h' を持つ何百もの単語があり、基本的にキー (0, 'h') にはこれらの単語すべてを含む値があります。

現在、私のプログラムは値を置き換えるだけです。どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1

3

dict.setdefault()これに最適です:

for line in fd:
    new_line = line.split(' ')
    for word in new_line:
        new_word = ''.join(l for l in word if l.isalpha())
        new_word = new_word.lower()
        for ind_count, let in enumerate(new_word):
            c_dict.setdefault((let, ind_count), set()).add(new_word)

enumerate()ループ内で手動でインクリメントするのではなく、最も内側の for ループも使用するように変更していることに注意してind_indexください。

c_dict.setdefault((let, ind_count), set()).add(new_word)動作は次のコードと同等です。

if (let, ind_count) in c_dict:
    c_dict[let, ind_count].add(new_word)
else:
    c_dict[let, ind_count] = set([new_word])
于 2013-03-18T16:31:27.243 に答える