Python 从元组中的多个词典获取项
我有以下一段代码,它是基于PythonMETAR航空库中某种天气编码的:Python 从元组中的多个词典获取项,python,dictionary,tuples,Python,Dictionary,Tuples,我有以下一段代码,它是基于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/
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})
我想创建一段代码,从properties元组中查找每个字典,如果代码值为BKN和OVC,则返回TRUE。除此之外,如果为真,我只想查看BKN和OVC的高度,并检查这些值是否小于1500
现在我并不是真的害怕IF语句,但目前,在一些谷歌搜索之后,我陷入了从字典中获取这些特定项目并最终将这些项目与海拔高度值联系起来的困境。你可以使用列表理解
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)
t={'A':'A','B':'B'},{'A':0,'B':'c'}
def脚:
最后=[]
对于t中的d:
如果d['A']=='A'和d['B']=='B':
最后+=[d]
最后返回
印刷脚
foo获取一个touple并返回所有匹配的dict。您可以修改它以返回真值或if部分中特定事物的特定值。使用此选项:
对于dic in属性:
如果['BKN','OVC']中的dic['code']:
printfDic:{dic}-TRUE,代码值为{dic['code']}
如果dic[‘高度’]>1500:
printf高度:{dic['Altitude']}
这里有一个名为checker的函数,其输入是字典
它返回两个布尔值。第一个布尔值表示代码是否为BKN/OVC,第二个布尔值表示精度要求
def checkerd:
return_booleans=[假,假]
如果['BKN','OVC']中的d['code']:
返回布尔值[0]=True
如果d[‘高度’]>1500:
返回布尔值[1]=True
返回布尔
对于d in属性:
代码布尔,高度布尔=checkerd
打印代码\u bool,高度\u bool
输出为:
False False
True True
如果代码值为BKN或OVC,并且将BKN或OVC作为代码的字典的高度值小于1500,则IF语句的预期输出将为TRUE。谢谢,这正是我所需要的!如果你不明白这是什么,在谷歌上查找列表理解有没有办法让代码忽略这个错误?TypeError:“NoneType”对象不可iterable基本上有些情况下根本没有BKN/OVC值,在所有这些情况下它都会返回一个TypeError。我是否应该定义一个函数:如果没有,则继续,否则返回res?@instaspam你是什么意思?你能粘贴得到错误的输入吗?从pythonmtar import*report=Metar'LROP'properties=report.getAttribute'cloud'printproperties打印属性res=[i['code']在'BKN'、'OVC'和i['altitude']<1500对于属性中的i]打印属性,输出为LROP 071230Z 261kt-CAVOK 27/10 Q1009 NOSIG None。基本上,代码没有找到任何要计算的云字典,并返回上面的TypeError。
False False
True True