2009-03-17 11 views
1

内の場所/インデックスに応じて、辞書から値を取得:= {0Pythonの - 私は辞書 "D" に入れて、データ取得のMySQLクエリからリスト

D:(datetime.timedelta(0を、 3:(datetime.timedelta(0, 26100))、2:(datetime.timedelta(0, 25800))、3:(datetime.timedelta(0, 26100) 、4:(datetime.timedelta(0、 26400))、5(datetime.timedelta(0、 26700))}

Iが持っています番号がある場合、私は "M" をテストしたいと思い

M = [3、4、1、4、7、4]

:のような番号のリスト "M" "4"、リスト "m"からのインデックスが辞書 "d"のキーに対応する "d"の時間で別のリスト "h"を受け取りたいと思います:m [1]、m [3]

h = [7:05:00、7:15]:m [5]は私にリスト[h]のd [1]、d [3]、d [5] 00、7:25:00]

私はそのために、あなたの入力を感謝します...

答えて

2

私は、これはあなたが探しているものであれば全くわからないんだけど、私はショットを取るよ:

>>> indices = [index for index, i in enumerate(m) if i == 4] 
>>> h = [d[i][0] for i in indices] 

次に、あなたがしたいようtimedeltasを処理しなければなりません。

+0

迅速かつ鋭敏な応答をありがとう! – elfuego1

-1

あなたは

def hms(td): 
    h = dt.seconds // 3600 
    m = dt.seconds%3600 // 60 
    s = dt.seconds%60 
    return h+td.days*24, m, s 


[ hms(d[ m[i] ]) for i in m ] 

を求めていますか?

0
deltas = [str(d[i][0]) for i, j in enumerate(m) if j == 4] 

は、デルタ表現のリストを文字列として生成します。

0

したがって、各インデックスでは、timedeltasのnタプルですか?コードから、潜在的に各インデックスに1つ以上のtimedeltaが存在する可能性があると仮定します。 インポート日時

import datetime 

d = {0: (datetime.timedelta(0, 25200),), 1: (datetime.timedelta(0, 25500),), 2: (datetime.timedelta(0, 25800),), 3: (datetime.timedelta(0, 26100),), 4: (datetime.timedelta(0, 26400),), 5: (datetime.timedelta(0, 26700),)} 
m = [3, 4, 1, 4, 7, 4] 

def something(m, d): 
    h = {} 
    for index in m: 
    if index in d and index not in h: 
     for dt in d[index]: 
     total = sum([dt.seconds for dt in d[index]]) 
     hours = total/3600 
     minutes = (total - (3600 * hours))/60 
     seconds = (total - (3600 * hours) - (60 * minutes)) 
     h[index] = "%d:%02d:%02d" % (hours, minutes, seconds) 
    return h.values() 

print something(m, d) # returns exactly what you asked for 
関連する問題