Python:使用日期时间键从字典中提取1天的值

时间:2015-08-03 13:36:53

标签: python datetime dictionary

我有一个dictionnary,其中datetime为key,numbre为value。

dict = {'08/07/2015 01:15':'3', '08/07/2015 08:15':'5',
 '09/07/2015 07:15':'4', '09/07/2015 10:30':'8'}

我想要每天的提取值。例如,在2015年7月9日我想要这个结果:

result = {'09/07/2015 07:15': '4', '09/07/2015 10:30': '8'}

result = [4, 8]

感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

>>> filter(lambda x: x[0:10] == "09/07/2015", dict)
['09/07/2015 10:30', '09/07/2015 07:15']

提示:不要将dict用作变量名。它已经被python使用了。

广泛的版本:

>>> filtered = {}
>>> for date, value in dict.iteritems():
...     if date.startswith("09/07/2015"):
...        filtered[date] = value
...
>>> filtered
{'09/07/2015 10:30': '8', '09/07/2015 07:15': '4'}

答案 1 :(得分:2)

如果我理解了这个问题,如果没有检查你的字典中的所有键,那就不可行了。

dict键是一个无序集,因为它们没有排序,所以没有办法采用"范围"单个操作中的键。

由于您正在对密钥进行哈希处理,因此2015年7月7日可能有任意数量的密钥,因此无法在不查看所有密钥的情况下检索每个密钥。

根据你想要完成的事情,你可能会考虑一个dicts的词典,其中顶级词典是按日期划分的,而内部词典是按时间划分的; e.g。

dict = { 
    "08/07/2015": { "01:15":"3" },
    "09/07/2015": { "07:15":"4", "10:30":"8" }
}

或某种有序的数据类型,如数组(这会花费你的查询时间,但需要的空间更少)。

答案 2 :(得分:1)

您需要迭代密钥并将密钥值与所需日期进行比较。

例如:

>>> sample = {"08/07/2015 01:15":"3", "08/07/2015 01:15":"5", "09/07/2015 07:15":"4", "09/07/2015 10:30":"8"}
>>> filtered = dict((x,y) for (x,y) in sample.items() if x.startswith('09/07/2015'))
>>> filtered
{'09/07/2015 10:30': '8', '09/07/2015 07:15': '4'}
>>> filtered.values()
['8', '4']