私は、文字と周波数の辞書を含むリストを持っています。基本的には、アルファベット(小文字と大文字)とスペースごとにそれぞれ53の辞書があります。辞書のリストからキー値を取得する
adict = {'Letter':'a', 'Frequency':0}
bdict = {'Letter':'b', 'Frequency':0}
cdict = {'Letter':'c', 'Frequency':0}
単語を入力すると、単語をスキャンして対応する文字の頻度を更新します。
for ex in range(0, len(temp)):
if temp[count] == 'a': adict['Frequency']+=1
elif temp[count] == 'b': bdict['Frequency']+=1
elif temp[count] == 'c': cdict['Frequency']+=1
たとえば、「Hello」と入力します。文字「H、e、l、l、o」が検出され、その頻度が更新されます。ゼロ以外の周波数は新しいリストに転送されます。
if adict['Frequency'] != 0 : newArr.append(adict)
if bdict['Frequency'] != 0 : newArr.append(bdict)
if cdict['Frequency'] != 0 : newArr.append(cdict)
この後、私はnewArrをFrequencyでソートし、finalArrという新しいリストに転送しました。以下は、 "Hello"という単語のサンプルリストの内容です。
{'Letter': 'H', 'Frequency': 1}
{'Letter': 'e', 'Frequency': 1}
{'Letter': 'o', 'Frequency': 1}
{'Letter': 'l', 'Frequency': 2}
ここで、キー値のみを2つの別々のリストに転送することをお勧めします。 letterArrとnumArrです。これはどうすればいいですか?私の希望する出力は:
letterArr = [H,e,o,l]
numArr = [1,1,1,2]
です。彼らは決して関連していません。つまり、それらを反復する簡単な方法はありません。それぞれの辞書には2つの要素しか含まれていないのはなぜですか?なぜ文字をキーとして使用し、頻度を値として使うのか? – Neel
なぜ最初に53の辞書がありますか? 'freq_dict = {'a':0、 'b':0、...}'のようにすることができます。その後、周波数をリストに簡単に転送できます。 – Selcuk
私は理解しやすくするだけです。基本的に私の最後のリストは単なる辞書のリストです。 – Learner