簡體   English   中英

來自多個列表/字典的Python日期時間交集

[英]Python intersection of datetimes from multiple lists/dictionaries

我有一個名為records的變量,看起來像這樣:

records = {
    'set1': [{'Time Stamp': datetime, 'data': data, ...}, {'Time Stamp': datetime, 'data': data, ...}, ...],
    'set2': [{'Time Stamp': datetime, 'data': data, ...}, {'Time Stamp': datetime, 'data': data, ...}, ...]
    .
    .
    .
}

我正在嘗試刪除所有在其他“集合”中沒有通用時間戳的字典(其中帶有“時間戳”的字典)。

我的第一個想法是從看起來像這樣的記錄中創建一個變量:

var = {
    'set1': [datetime, datetime, ...],
    'set2': [datetime, datetime, ...],
    .
    .
    .
}

然后從那里循環遍歷list(set(a) & set(b)) (從這里開始 )以獲取所有常見時間戳的列表。

我如何創建變量var 我認為可以使用列表生成器表達式來完成,但我只是不知道如何創建它們。

如果您認為這不是正確的方法,您將如何做? 就時間復雜度而言,永遠不會有超過10個“集合”,但是每個集合有大約4,000個字典,每個字典中都有大約5個鍵/值。

編輯:為簡化問題,如何從詞典列表中創建列表? 為了說明這一點:

dict = {'time': timevalue, 'otherstuff': othervalue}
list = [dict, dict, dict] # a list of dictionaries in the form of dict
# create result
result = [timevalue, timevalue, timevalue, timevalue]
>>> import datetime
>>> 
>>> my_dict = {'time': datetime.datetime.now(), 'otherstuff': 'fooo'}
>>> my_list = [my_dict for i in xrange(3)]
>>> result = [d['time'] for d in my_list]
>>> result
[datetime.datetime(2014, 8, 19, 14, 13, 3, 620886), datetime.datetime(2014, 8, 19, 14, 13, 3, 620886), datetime.datetime(2014, 8, 19, 14, 13, 3, 620886)]
>>> 

可能是這樣的:

var = {}
for set, list in records.iteritems():
    var[set] = [i['Time Stamp'] for i in list]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM