【发布时间】:2017-09-21 10:45:02
【问题描述】:
我已经找了好几个小时了,一直没能找到正是我需要的东西,所以我想我会问的。我正在尝试根据另一个字典列表从列表列表中删除元素。我有一个不想出现在我的列表中的项目列表。
exclude_list = [{'arb_field_1': '0', 'arb_field_2': '59',
'surrogate_key': '0502f5fb0731b5afc'},
{'arb_field_1': '0', 'arb_field_2': '62',
'surrogate_key': '1676c663914864973'},
{'arb_field_1': '0', 'arb_field_2': '62',
'surrogate_key': '2fc1ed4adffbb635'}]
然后我有我的主列表,我想根据字典排除列表中的 surrogate_key 从中删除元素。
prim_list = [['0502f5fb0731b5afc', 'bla_bla_bla', 'foo_bar1'],
['0502f5fb0731b5afc', 'john_smith', 'dummy_data_elem1'],
['002b2a71e8b514', '5450464', 'data_i_dont_care_about'],
['2fc1ed4adffbb635', '05d3mh', 'obfuscated_field1'],
['12319618913119', 'granny_apples', 'filler_filler']]
我有以下有效的循环(感觉不是很 Python,但我是 Python 新手,所以我愿意接受有关这方面的建议).. 但仅限 删除匹配的一个实例,我需要删除匹配的 所有 个实例。
for exclude_list_item in exclude_list:
for i, v in enumerate(prim_list):
if v[0] == exclude_list_item.get('surrogate_key'):
prim_list.remove(prim_list[i])
我最终想要的是这样的列表:
prim_list = [['002b2a71e8b514', '5450464', 'data_i_dont_care_about'],
['12319618913119', 'granny_apples', 'filler_filler']]
【问题讨论】:
-
顺便说一句,Python 2.6 就像十年前一样问世。 Python 2 已在 2020 年结束生命周期。也许是时候切换到 Python 3,或者至少是当前版本的 Python 2.7。
-
没有帮助.. 谢谢
标签: python list dictionary python-2.6