如何將我的代碼更改爲僅使用一個循環。我嘗試使用.iteritems(),出iterkeys()等等......Python - 循環多維詞典的更好方法
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
)
它創建結構是這樣的: 數據= { '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), }, } }
爲什麼你要只有一個循環。據我所知,你只能訪問每個元素一次。因此,只要你不打算在並行線程/進程中執行工作,僅使用一個循環幾乎沒有收益。 – JohanL
提問者可能會被「平坦比嵌套更好」的事實所激發。 (Python的禪) –