通过遍历字典列表来处理独立的值
问题描述:
Faultysats=[{'G11': '16 01 13 09 43 50.0000000'},
{'G11': '16 01 13 09 43 51.0000000'},
{'G03': '16 01 13 09 43 52.0000000'}]
SATS=['G01', 'G03', 'G04', 'G08', 'G11', 'G19', 'G28', 'G32']
EPOCH='16 01 13 09 43 51.0000000'
我有一个这些列表 - 故障列表,包含变化的卫星和时代的字典列表; SATS,包含sats的列表;和时间值EPOCH。 如果在SATS中出现故障卫星(例如'G11')的卫星并且它的相应时期(例如'16 01 13 09 43 50.0000000')出现在EPOCH中,我想知道卫星位于哪个指数SATS清单。通过遍历字典列表来处理独立的值
希望是有道理的,即时通讯挣扎,因为我不知道如何确定字典列表中的不同值。是否有某个操作员处理从sat列表中提取数据?
感谢
答
要获得索引列表,你可以使用:
Faultysats=[{'G11': '16 01 13 09 43 50.0000000'},
{'G11': '16 01 13 09 43 51.0000000'},
{'G03': '16 01 13 09 43 52.0000000'}]
SATS=['G01', 'G03', 'G04', 'G08', 'G11', 'G19', 'G28', 'G32']
EPOCH='16 01 13 09 43 51.0000000'
indexes = []
for i in range(0, len(Faultysats)):
for key in Faultysats[i]:
if (key in SATS) and (Faultysats[i][key] == EPOCH):
indexes.append(i)
print(indexes)
答
如何:
获取第一字典的键,其列表中相应的value
等于EPOCH
然后得到key
的索引从SATS
:
>>> Faultysats=[{'G11': '16 01 13 09 43 50.0000000'},
{'G11': '16 01 13 09 43 51.0000000'},
{'G03': '16 01 13 09 43 52.0000000'}]
>>> SATS=['G01', 'G03', 'G04', 'G08', 'G11', 'G19', 'G28', 'G32']
>>> EPOCH='16 01 13 09 43 51.0000000'
>>> f = [k for d in Faultysats for k,v in d.items() if EPOCH == v]
>>> indx = [SATS.index(x) for x in f]
>>>
>>> indx
[4]
答
首先,让我们列出Faultysats
中所有在SATS
之间的卫星并且具有EPOCH
时间戳。现在
sats = [sat for pair in Faultysats for sat, epoch in pair.iteritems()
if sat in SATS and epoch == EPOCH]
>>> sats
['G11']
你可以使用字典解析来提供SATS每颗卫星的索引位置(假设有没有重复)。
>>> {s: SATS.index(s) for s in sats}
{'G11': 4}
谢谢,这似乎工作! –