首页 > 解决方案 > 从元组内的多个字典中获取项目

问题描述

我有以下基于PythonMETAR(航空中的某种天气编码)库的代码:

from PythonMETAR import *
report = Metar('LRSM')
properties = report.getAttribute('cloud')
print(report)

print(properties)

它返回我以下结果:

LRSM 071100Z 28005KT 220V320 9000 -RA FEW006 BKN025 BKN035 12/11 Q1010 R01/29//95

({'code': 'FEW', 'meaning': 'Few', 'oktaMin': 1, 'oktaMax': 2, 'altitude': 600, 'presenceCB': False, 'presenceTCU': False}, {'code': 'BKN', 'meaning': 'Broken', 'oktaMin': 5, 'oktaMax': 7, 'altitude': 2500, 'presenceCB': False, 'presenceTCU': False})

我想创建一段代码,它将从元组中查找每个字典,如果值为and则properties返回我。除此之外,如果我想查看唯一的and并检查这些值是否小于.TRUEcodeBKNOVCTRUEaltitudeBKNOVC1500

现在我并不真正害怕 IF 语句,但目前,经过一些谷歌搜索后,我坚持从字典中获取这些特定项目,并最终将这些项目与altitude值联系起来。

标签: pythondictionarytuples

解决方案


您可以使用列表推导。

seq = ({'code': 'FEW', 'meaning': 'Few', 'oktaMin': 1, 'oktaMax': 2, 'altitude': 600, 'presenceCB': False, 'presenceTCU': False},
    {'code': 'BKN', 'meaning': 'Broken', 'oktaMin': 5, 'oktaMax': 7, 'altitude': 2500, 'presenceCB': False, 'presenceTCU': False})

res = [i['code'] in ('BKN', 'OVC') and i['altitude'] < 1500 for i in seq]

print(res)

输出

[False, False]

推荐阅读