在python列表中使用来自另一个lis的每个值的Lookup元素

2024-09-27 22:23:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试过in循环,while true loops,next等等。要么我一遍又一遍地获取信息,要么循环一旦找到元素就不重新开始。我也在soo和google上搜索过解决方案,但是没有成功。在

我要做的是:

for feature in parJson:
    ids = feature['properties']['id']
    event = feature['properties']['event']
    headline = feature['properties']['headline']
    expires = feature['properties']['expires']
    areaDesc = feature['properties']['areaDesc']
    geoCodes = feature['properties']['geocode']['UGC']

    states = alerts.getZones(geoCodes)

def getZones(self, getZones):
    zones = json.loads(open("resources/zones.json").read())
    parsedZones = zones['features']
    #TODO figure out how to compare this list!
    states = []
    for ugcCode in getZones:
        ugcCode = str(ugcCode)
        for element in parsedZones:
            ugc = element['properties']['id']
            state = element['properties']['state']
            if ugc == ugcCode:
                states.append(state)
                break

    print(states)

getZones是UGC地理代码区域的列表。parsedZones是一个json列表,其中列出了来自api.weather.gov/alerts/active. 在

以及数据:

parsedZones:https://api.weather.gov/zones(下载到磁盘,因为它太大了)

parJson:https://api.weather.gov/alerts/active

从活动警报列表中,我得到了警告有效的ugc代码。api不提供状态,只提供那些代码。所以我需要把代码解码成州名。我已经有一本有州名/缩写词的字典了。我需要的是基于警告中列出的UGC代码的python唯一状态集。一旦我有了状态,我就可以用缩写查找每个州的名称,然后显示状态。所以应该是这样的:

假设一个警告对德克萨斯州和俄克拉荷马州有效。提供的代码是OKC001和TXC001。我不能只使用startswith来获取前两个字母,因为有些区域不以州缩写开头。因此,我必须使用api提供的区域列表,该列表是我下载到服务器上的。我需要查找提供的每个代码一次一个,并检索两个字母的缩写。我拿到后就可以用它了。但我似乎不能让它发挥作用。目标是将每个州的缩写添加到一个集合中,以获得唯一的值。在

到目前为止,我所做的最终结果是:

^{pr2}$

Tags: 代码inapi列表for状态propertiesfeature
2条回答

我发现了问题。我上传了一个带有区域的新文件,但实际上并没有覆盖旧文件。使用wget检索文件,解决了这个问题。感谢@mauve的建议。一旦我得到正确的数据,它确实对我的问题有所帮助。在

你的问题是循环会导致你循环的每个元素的所有变量都被覆盖。在

states = []
for feature in parJson:
    ...
    states.append(alerts.getZones(geoCodes))
print(states)

这将产生一份有关州的名单。你可能想把这些信息都存储在一个嵌套的字典里,每个状态都是一个键,你想知道的各种项目是你附加的列表,如果你有额外的信息而不是覆盖。。。在

相关问题 更多 >

    热门问题