从dict列表的另一列中按值删除item

2024-09-30 23:29:40 发布

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

让我们假设我有一个单子。每个dict包含一个键from和另一个名为to的键。现在,我想要这样:在from键的第二次和后续出现中,to键的值不同于与该from键关联的第一个to键的值,应该从列表中删除该dict

示例:

[ {'from': '67f', 'to': 'f9b'}, {'from': '67f', 'to': 'f9b'}, {'from': '67f', 'to': 'f9b'}, {'from': 'f9b', 'to': '67f'}, {'from': 'f9b', 'to': '21g'} ]

会变成这样:

[ {'from': '67f', 'to': 'f9b'}, {'from': '67f', 'to': 'f9b'}, {'from': '67f', 'to': 'f9b'}, {'from': 'f9b', 'to': '21g'} ]

Tags: tofrom示例列表dict单子f9b
2条回答

这会有帮助的

list_dict = [ {'from': '67f', 'to': 'f9b'}, {'from': '67f', 'to': 'f9b'}, 
              {'from': '67f', 'to': 'f9b'}, {'from': 'f9b', 'to': '67f'}, 
              {'from': 'f9b', 'to': '21g'}]
not_wanted_to_keys = []
wanted_list_dict = []
for my_dict in list_dict:
    not_wanted_to_keys.append(my_dict['from'])
    if my_dict['to'] not in not_wanted_to_keys:
        wanted_list_dict.append(my_dict)
print(wanted_list_dict)

您可以尝试以下方法:

data = [ {'from': '67f', 'to': 'f9b'},
 {'from': '67f', 'to': 'f9b'},
 {'from': '67f', 'to': 'f9b'},
 {'from': 'f9b', 'to': '67f'},
 {'from': 'f9b', 'to': '21g'} ]

final_data = []

for i in range(len(data)):
  if(i == 0 or data[i]['to'] != data[i-1]['from']):
    final_data.append(data[i])

print(final_data)

循环查看数据并检查除第一个项目外的所有项目的条件

相关问题 更多 >