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

2024-04-26 07:07:35 发布

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

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'

我有一个这样的列表-faultysats,一个包含不同卫星和历元时间的字典列表;SATS,一个包含SATS的列表;以及历元,一个时间值。 如果来自faultysats的卫星(例如“G11”)出现在SATS中,而来自faultysats的相应epoch(例如“16 01 13 09 43 50.0000000”)出现在epoch中,我想知道卫星在SATS列表中处于哪个索引。你知道吗

希望这是有意义的,我正在努力,因为我不知道如何确定字典列表中不同的值。是否有某个操作员负责从SAT列表中提取数据?你知道吗

谢谢


Tags: 列表字典时间epoch历元g11satsg28
3条回答

首先,让我们得到一个来自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}

要获取可使用的索引列表,请执行以下操作:

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,然后从SATS获取该key的索引:

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

相关问题 更多 >