Python:从对象字典中获取值(对象),其中一个对象的字段与值(或条件)匹配

Bor*_*jaX 6 python dictionary

我有一个python字典,其键是字符串,值是对象.

例如,一个带有一个字符串和一个int的对象

class DictItem:
   def __init__(self, field1, field2):
      self.field1 = str(field1)
      self.field2 = int(field2)
Run Code Online (Sandbox Code Playgroud)

和字典:

myDict = dict()
myDict["sampleKey1"] = DictItem("test1", 1)
myDict["sampleKey2"] = DictItem("test2", 2)
myDict["sampleKey3"] = DictItem("test3", 3)
Run Code Online (Sandbox Code Playgroud)

哪个是获得"field2"字段> = 2的字典条目的最佳/最有效方法?

这个想法是创建一个"子词典"(列表也会这样),只有field2> = 2的条目(在例子中会是这样):

{
    "sampleKey2": {
        "field1" : "test2",
        "field2": 2 
    },
    "sampleKey3": {
        "field1" : "test3",
        "field2": 3 
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有比走遍所有字典元素并检查条件更好的方法?也许使用itemgetters和lambda函数?

谢谢!

PS:我正在使用Python2.4,以防万一它是相关的

Ale*_*lli 8

为了使dictdict,

subdict = dict((k, v) for k, v in myDict.iteritems() if v.field2 >= 2)
Run Code Online (Sandbox Code Playgroud)