如何删除具有不同键但值相同的字典项?我确定有比我的新手算法更好的方法...?
示例:(出现错误“ 字典在迭代过程中更改了大小”)
此示例的目标是从字典中删除“ car_id”或“ truck_id”。
key_fields_obj = {}
key_fields_obj['car_id'] = 'bob'
key_fields_obj['bike_id'] = 'sam'
key_fields_obj['truck_id'] = 'bob' #goal: remove this one, so left with only car_id and bike_id
for item in key_fields_obj:
tst = key_fields_obj[item]
for comp in key_fields_obj:
if item == comp:
continue
cmp = key_fields_obj[comp]
if cmp == tst:
del key_fields_obj[comp]
print(key_fields_obj)
答案 0 :(得分:3)
使用键作为值和键作为值创建一个新的字典,然后对新字典再次执行相同的操作。
>>> key_fields_obj = {key_fields_obj[key]: key for key in key_fields_obj}
>>> key_fields_obj
{'bob': 'truck_id', 'sam': 'bike_id'}
>>>
>>> key_fields_obj = {key_fields_obj[key]: key for key in key_fields_obj}
>>> key_fields_obj
{'truck_id': 'bob', 'bike_id': 'sam'}
答案 1 :(得分:2)
seem_values = set()
for key, value in list(key_fields_obj.items()):
if value in seem_values:
del key_fields_obj[key]
else:
seem_values.add(value)