2016-02-29 84 views
0
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列表中提取數據?

感謝

回答

0

要獲得索引列表,你可以使用:

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) 
0

如何:

獲取第一字典的鍵,其列表中相應的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

謝謝,這似乎工作! –

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}