0

私は Python にかなり慣れていないので、自分の問題を説明するための適切な専門用語を思い付くのに苦労しています。基本的な考え方は、次の構造を持つ dict があることです。

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"

私のdictははるかに大きいので、dict全体を反復せずにこれを行うための優れた1行の方法はありますか?

4

3 に答える 3

1

resque へのジェネレータ式:

next(d['value']
    for d in myDict['SomeMetric']['day']
    if d['date'] == "2013-01-02")

したがって、すべての辞書をループして、探しdayているに一致する最初の辞書を見つけますdate。このループは、一致が見つかるとすぐに停止します。

于 2013-01-14T21:41:42.467 に答える
1

データ構造を制御できますか? 最適ではないルックアップに適した方法で構築されているようです。

私はそれを次のように構成します:

data = { 'metrics': { '2013-01-02': 1234, '2013-01-01': 4321 } }

そして、ルックアップは単純です:

data['metrics']['2013-01-02']

于 2013-01-14T21:46:31.523 に答える
0

構造を変えることはできますか?day可能であれば、日付をキーとして、値を値として持つ辞書にリストを変更する方がはるかに簡単であることに気付くかもしれません。

myDict = {
"SomeMetric":{
    "day":{
        "2013-01-01": 1234,
        "2013-01-02": 5678,
        etc...

次に、直接インデックスを付けることができます

myDict["SomeMetric"]["day"]["2013-01-02"]
于 2013-01-14T21:48:16.060 に答える