前提・実現したいこと
ここに質問の内容を詳しく書いてください。
現在自然言語処理の100本ノックの5本めをしているのですが、
なぜか辞書型をアップデートしている途中で順番がおかしくなってしまいます。
客観的にどうすればいいか教えてください。
よろしくお願いします。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題
In [19]: elem
Out[19]:
{'0': 'H',
'1': 'He',
'10': 'Na',
'11': 'Mi',
'12': 'Al',
'13': 'Si',
'14': 'P',
'15': 'S',
'16': 'Cl',
'17': 'Ar',
'18': 'K',
'19': 'Ca',
'2': 'Li',
'3': 'Be',
'4': 'B',
'5': 'C',
'6': 'N',
'7': 'O',
'8': 'F',
'9': 'Ne'}
上記の問題を普通に0,1,2,3,....という順番で出力する想定です。
該当のソースコード
python
1""" 204. 元素記号 3"Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can."という文を単語に分解し,1, 5, 6, 7, 8, 9, 15, 16, 19番目の単語は先頭の1文字,それ以外の単語は先頭に2文字を取り出し,取り出した文字列から単語の位置(先頭から何番目の単語か)への連想配列(辞書型もしくはマップ型)を作成せよ. 4""" 5# 空白を元に分割して配列の中に入れる。 6# 1, 5, 6, 7, 8, 9, 15, 16, 19番目は先頭1文字, それ以外は先頭2文字を取り出しリストに入れなおす。 7# 同様に何番目かを保持しておく。 8# 単語の位置を保持する(先頭から何番目か) 9# 辞書型{何番め:単語}で連想配列を作成。 10 11text = "Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can." 12text = text.split(" ") 13solo_num = [] 14solo_num = [1, 5, 6, 7, 8, 9, 15, 16, 19] # これら全てから1を引く 15solo_num[:] = [n - 1 for n in solo_num] 16elem = {} 17 18 19for i in range(len(text)): 20 if i in solo_num: 21 elem.update({str(i):text[i][0]}) 22 else: 23 elem.update({str(i):text[i][0] + text[i][1]}) 24 25 26
どなたかご教授よろしくお願いします。
また、pythonのスライスがよくわかってないので
solo_num[:]というのはどのような処理をしているかも知っていれば教えていただきたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/18 05:44