0

私のデータは次のようになります。

buffer = [{"siteid": 1 , "distance": 2, "codes": "1|b|c", "urv": "545"}, {"siteid": 2 , "distance": 2, "codes": "1|b|c", "urv": "55"}, {"siteid": 2 , "distance": 2, "codes": "1|b|c", "urv": "55"}, {"siteid": 3 , "distance": 2, "codes": "1|b|c", "urv": "546"}]
layer = [{"siteid": 2 }, {"siteid": 4 }, {"siteid": 3 }]

サイト ID が同じバッファ リストのすべてのメンバーを返すことができるようにしたいと考えています。

結果は次のようになります。

[{"siteid": 2 , "distance": 2, "codes": "1|b|c", "urv": "55"}, {"siteid": 2 , "distance": 2, "codes": "1|b|c", "urv": "55"}, {"siteid": 3 , "distance": 2, "codes": "1|b|c", "urv": "546"}]

ティア、クリス

4

3 に答える 3

1

このようなもの?

buffer = [{"siteid": 1 , "distance": 2, "codes": "1|b|c", "urv": "545"}, {"siteid": 2 , "distance": 2, "codes": "1|b|c", "urv": "55"}, {"siteid": 2 , "distance": 2, "codes": "1|b|c", "urv": "55"}, {"siteid": 3 , "distance": 2, "codes": "1|b|c", "urv": "546"}]
layer = [{"siteid": 2 }, {"siteid": 4 }, {"siteid": 3 }]
ids = [l['siteid'] for l in layer]
print [b for b in buffer if b['siteid'] in ids]
于 2013-10-09T14:27:20.217 に答える
1
intersection = set(x['sideid'] for x in buffer) & set(x['siteid'] for x in layer)
return [x for x in buffer if x['sideid'] in intersection]
于 2013-10-09T14:28:24.203 に答える
1

これを実行できるビルトインは知りませんが、独自の関数を作成して、2 つの辞書の共通点を見つけることができます。

def find_intersection(buffer, layer):
    siteids = [a['siteid'] for a in layer]
    return [item for item in buffer if item['siteid'] in siteids]
于 2013-10-09T14:27:07.263 に答える