我的列表如下:
list = [{u'Value': u'Value1', u'Key': u'Key1'}, {u'Value': u'value2', u'Key': u'key2'}]
我想检索value1,但仅当key1匹配特定字符串时,我不确定是否必须对此进行两次迭代?
答案 0 :(得分:0)
您可以在列表理解中添加防护以充当过滤器
[d[u"Value"] for d in list if d[u"Key"] == u"Key1"]
您还应避免掩盖list
之类的内置名称
答案 1 :(得分:0)
否,您不需要遍历列表两次:
value = None
for d in list:
if d[u"Key"] == u"Key1":
value = d[u"Value"]
可以使用next()
和生成器将其写成一行:
value = next((d[u"Value"] for d in list if d[u"Key"] == u"Key1"), None)