私はdictsのリストを持っています(各エントリがdictであるリスト)。それぞれのdictには異なるキーセットがあるため、1つのdictにはリスト内の他のdictsには存在しないキーが存在することがあります。私はこのリストの中で特定の順序の辞書を見つけようとしています。基本的に、このリストはwiresharkキャプチャからのものであり、特定のパケットを探したいと思う。リストの中央には特定の一連のパケットがあります。また、このシーケンスの中には、私が無視/フィルターしたいパケットがいくつかあります。これを達成する最良の方法は何ですか? A_CONSTANT_I_HAVE_DEFINED, ANOTHER_CONSTANT, SOME_OTHER_CONSTANT
:私はフィールドsome_field
と異なるsome_other_field
、および異なる定数を持っているかそれぞれ異なるキーを持つdictのリスト、dictsのシーケンスを探す最良の方法
for i in range(len(packets)):
p = packets[i].fields # This method turns the packet object into a dict
try:
if p['some_field'] == A_CONSTANT_I_HAVE_DEFINED:
# Mark this packet as part of the sequence
# Save as part of sequence
first_packet = p
# Do not check for this condition again! I want to go to the next
# iteration once I come across a packet with similar property
# (the equality satisfied)
if p['some_field'] == ANOTHER_CONSTANT:
# Same as above
second_packet = p
if p['some_other_field'] == SOME_OTHER_CONSTANT:
# Same as above
third_packet = p
except KeyError as err:
pass
# Now I should have first_packet, second_packet and third_packet
# The list packets will always have the sequence of packets I am looking for
注:私は下に書かれたいくつかの擬似コードを持っています。私は明確ではないですsome_other_field
条件を満たすと、つまりシーケンス内のパケットの1つが見つかったら、その比較をもう一度やり直すべきではありません。 – nnja