我有一个词典列表,如下所示:
data = [{'active': 'false', 'id': [u'PB1001216', u'PB1007555'], 'game': u'Game1', 'name': u'Test'},
{'active': 'false', 'id': [u'PB1001216', u'PB1007555', u'PB1000395'], 'game': u'Game1', 'name': u'Test'},
{'active': 'false', 'id': [u'PB1007555'], 'game': u'Game2', 'name': u'Test'}]
我想删除列表中的字典,其中game
,name
的值存在,id
列表是另一个字典项的子集。具有最多元素的列表应保持为最新的。
所以在上面的例子中。我希望:
有关解决此问题的最佳方法的任何建议吗?
答案 0 :(得分:0)
你可以遍历那些符合你条件的元素:
data = [{'active': 'false', 'id': [u'PB1001216', u'PB1007555'], 'game': u'Game1', 'name': u'Test'},
{'active': 'false', 'id': [u'PB1001216', u'PB1007555', u'PB1000395'], 'game': u'Game1', 'name': u'Test'},
{'active': 'false', 'id': [u'PB1001316', u'PB1007555', u'PB1000395'], 'game': u'Game1', 'name': u'Test'},
{'active': 'false', 'id': [u'PB1007555'], 'game': u'Game2', 'name': u'Test'}]
for item in data:
for element in data:
if element != item and element['game'] == item['game']:
if len(item['id']) > len(element['id']):
if element['id'] == item['id'][:len(element['id'])]:
data.pop(data.index(element))
else:
if item['id'] == element['id'][:len(item['id'])]:
data.pop(data.index(item))