通过遍历字典列表来处理独立的值

问题描述:

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] 
+0

谢谢,这似乎工作! –

首先,让我们列出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}