繁体   English   中英

如何删除具有相同特定键值的字典元素列表

[英]How to remove the list of dictionary elements with the same specific key-value

我希望我的 python 代码浏览列表元素并删除那些“时间”值相同的元素,同时保留第一个元素。 这是我的清单:

a = [
     {'time': '18.00', 'id': 'bus_1', 'CO2': '8165.28'},
     {'time': '20.00', 'id': 'bus_1' , 'CO2': '0.00'},
     {'time': '21.00', 'id': 'f2.0' , 'CO2': '0.00'},
     {'time': '18.00', 'id': 'bus_1', 'CO2': '8165.28', 'waiting': '0.00'},
     {'time': '20.00', 'id': 'bus_1', 'CO2': '0.00', 'waiting': '0.00'}
     ]

预期输出:

b = [
     {'time': '18.00', 'id': 'bus_1', 'CO2': '8165.28'},
     {'time': '20.00', 'id': 'bus_1' , 'CO2': '0.00'},
     {'time': '21.00', 'id': 'f2.0' , 'CO2': '0.00'},
    ]

一种选择是跟踪已经看到的时间:

a = [
     {'time': '18.00', 'id': 'bus_1', 'CO2': '8165.28'},
     {'time': '20.00', 'id': 'bus_1' , 'CO2': '0.00'},
     {'time': '21.00', 'id': 'f2.0' , 'CO2': '0.00'},
     {'time': '18.00', 'id': 'bus_1', 'CO2': '8165.28', 'waiting': '0.00'},
     {'time': '20.00', 'id': 'bus_1', 'CO2': '0.00', 'waiting': '0.00'}
     ]

output, time_seen = [], set()
for dct in a:
    time = dct['time']
    if time not in time_seen:
        output.append(dct)
        time_seen.add(time)

print(output)
# [{'time': '18.00', 'id': 'bus_1', 'CO2': '8165.28'},
#  {'time': '20.00', 'id': 'bus_1', 'CO2': '0.00'},
#  {'time': '21.00', 'id': 'f2.0', 'CO2': '0.00'}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM