, wie ich den Code ändern kann nur eine Schleife zu verwenden. Ich versuche .iteritems() zu verwenden, iterkeys() etc ...Python - Besserer Weg zum Einschleifen mehrdimensionale Wörterbuch
for user in data:
for item in data[user]:
start = seconds_since_midnight(
data[user][item]['start']
)
end = seconds_since_midnight(
data[user][item]['end']
)
overtime = end - start
if overtime > eight_hours:
if user not in result:
if str(user) not in names.keys():
continue
result[user] = {
'name': names[str(user)]['name'],
'overtime': []
}
result[user]['overtime'].append(overtime - eight_hours)
try:
result[user]['overtime'] = sum(result[user]['overtime'])
except KeyError:
pass
return sorted(
result.items(),
key=lambda result: result[1]['overtime'],
reverse=True
)
Es schafft Struktur wie folgt aus: data = { 'user_id': { datetime.date (2013, 10, 1): { 'start': datetime.time (9, 0, 0), 'end': datetime.time (17, 30, 0), }, datetime.date (2013, 10, 2) : { 'start': datetime.time (8, 30, 0), 'end': datetime.time (16, 45, 0), }, } }
tun Warum wollen Sie nur eine Schleife haben. Soweit ich das beurteilen kann, greifen Sie nur einmal auf jedes Element zu. Daher ist es wenig oder kein Vorteil, wenn nur eine Schleife verwendet wird, solange Sie nicht planen, die Arbeit in parallelen Threads/Prozessen auszuführen. – JohanL
Der Fragesteller könnte durch die Tatsache motiviert werden, dass "flach besser ist als verschachtelt". (Zen of Python) –