前提
Pythonで業務改善に取り組んで今す。
For文内で、dataというListからDictionaryとしてある値を取得し、キーを選択するとキーエラーが生じます。For文外でdata[0]を取得して同様の操作を行うとエラーは生じません。
data[0]の中身は
{'日報日付': '2022/10/20',
'現場名': '',
'報告者': '',
'開始時間': '08:00',
'終了時間': '17:30',
'作業内容': ''''}
というようになってます。(現場名、報告者、作業内容については守秘義務上消しています。)
実現したいこと
キーエラーの修正
発生している問題・エラーメッセージ
KeyError: '開始時間'
該当のソースコード
Python
1elements=data[0] 2start_time=int(elements["開始時間"].replace(':','')) 3finish_time=int(elements["終了時間"].replace(':','')) 4sum=((finish_time-start_time)%100)/60+(finish_time-start_time)//100 5sum
出力は求めたい値でした。こちらのコードではエラーは発生しません。下記のfor文で操作を行うとKeyErrorが生じます。
Python
1for elements in data: 2 datum={} 3 time_work=0 4 5 start_time=int(elements["開始時間"].replace(':','')) 6 finish_time=int(elements["終了時間"].replace(':','')) 7 8 time_work=((start_time)%100)/60+(finish_time-start_time)//100 9 10 datum["労働時間"]=time_work 11 12 data.append(datum)
試したこと
for文外で一つの要素data[0]に対して実行すると、正しい出力が得られたことから
Python
1for i in range(len(data)): 2 datum={} 3 time_work=0 4 5 elements=data[i] 6 7 start_time=int(elements["開始時間"].replace(':','')) 8 finish_time=int(elements["終了時間"].replace(':','')) 9 10 time_work=((start_time)%100)/60+(finish_time-start_time)//100 11 12 datum["労働時間"]=time_work 13 14 data.append(datum)
for文の第一行を違う形で書きましたが、同様にkeyerrorが生じました。
補足情報(FW/ツールのバージョンなど)
Python3,jupyter labを使用しています。
回答1件