我对Python很陌生,所以我很难用恰当的术语来描述我的问题。 基本的想法是我有一个具有以下结构的字典:
myDict =
"SomeMetric":{
"day":[
{"date": "2013-01-01","value": 1234},
{"date": "2013-01-02","value": 5678},
etc...
我想提取日期已知的“价值”。所以我想:
myDict["SomeMetric"]["day"]["value"] where myDict["SomeMetric"]["day"]["date"] = "2013-01-02"
有没有一个很好的单行方法,没有迭代整个字典,因为我的字典要大得多,而且我已经迭代了它,所以我宁愿不做嵌套的iteritems。
答案 0 :(得分:1)
生成器resque的表达式:
next(d['value']
for d in myDict['SomeMetric']['day']
if d['date'] == "2013-01-02")
因此,循环遍历所有day
词典,找到与您正在寻找的date
匹配的第一个词典。一旦找到匹配,此循环就会停止。
答案 1 :(得分:1)
您是否可以控制数据结构?它似乎是以这样一种方式构建的,这种方式可以用于次优查找。
我会这样构建它:
data = { 'metrics': { '2013-01-02': 1234, '2013-01-01': 4321 } }
然后你的查询就是:
data['metrics']['2013-01-02']
答案 2 :(得分:0)
你能改变结构吗?如果可以,您可能会发现将day
列表更改为将日期作为键和值作为值的字典更加容易,因此
myDict = {
"SomeMetric":{
"day":{
"2013-01-01": 1234,
"2013-01-02": 5678,
etc...
然后你可以直接用
索引它myDict["SomeMetric"]["day"]["2013-01-02"]