0

random.txt各単語を取得する必要があるファイルがあり、辞書内の位置と文字にインデックスを付けます。たとえば、次のようになります{(3,'m'):'example'}。同じ位置に同じインデックス文字を持つ単語があるたびに、その単語を辞書の値に追加するだけなので、{(3,'m'):'example','salmon'}それぞれを個別に出力することはありません。

これは私が持っているものであり、毎回独自の値を作成するたびにキーの値に単語を追加するわけではありません。

def fill_completions(c_dict, fileObj):
    import string
    punc = string.punctuation
    for line in fileObj:
        line = line.strip()
        word_list = line.split()    #removes white space and creates a list
        for word in word_list:
            word = word.lower()     
            word = word.strip(punc) #makes lowercase and gets rid of punctuation
            for position,letter in enumerate(word):
                "position: {} letter: {}".format(position,letter)
                my_tuple = (position,letter)
                if word in my_tuple:
                    c_dict[my_tuple] += word
                else:
                    c_dict[my_tuple] = word
        print(c_dict)
4

2 に答える 2

1

現在、文字列を追加してから、文字列に追加しています。

タプルを値として入れてから、タプルに追加する必要があります。

>>> m = dict()
>>> m['key'] = 'Hello'
>>> m['key'] += 'World'
>>> print m['key']
HelloWorld
>>>
>>> m['key'] = ('Hello',)
>>> m['key'] += ('World',)
>>> print m['key']
('Hello', 'World')
>>> # Or, if you want the value as a list...
>>> m['key'] = ['Hello']
>>> m['key'].append('World')
>>> print m['key']
['Hello', 'World']
于 2013-03-18T23:42:37.823 に答える
0

c_dict最も内側のループに入力されるコードを次のように変更したいと思います。

            if my_tuple in c_dict:
                c_dict[my_tuple].add(word)
            else:
                c_dict[my_tuple] = set([word])

dict.setdefault()もう少し簡潔な同等のバージョンを次に示します。

            c_dict.setdefault(my_tuple, set()).add(word)
于 2013-03-18T23:56:48.573 に答える