来自多个列表/词典的Python日期时间的交集

时间:2014-08-19 17:45:17

标签: python list dictionary expression generator

我有一个名为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))(来自here)的内容,以获取所有常用时间戳的列表。

我怎样才能创建变量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]

2 个答案:

答案 0 :(得分:0)

>>> 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)]
>>> 

答案 1 :(得分:-2)

这样的事情可能是:

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