我有一个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]
感谢您的帮助。
答案 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']