我有一个像
这样的清单d=[{'date': datetime.datetime(2016, 6, 3, 8, 32, 35), 'temp': 39.1}, {'date': datetime.datetime(2016, 6, 3, 9, 32, 35), 'temp': 39.1}, {'date': datetime.datetime(2016, 6, 3, 9, 32, 35), 'temp': 39.1}, {'date': None, 'temp': None}, {'date': datetime.datetime(2016, 6, 3, 11, 32, 35), 'temp': 39.1},{'date': None, 'temp': None}]
我的输出应该是
d=[{'date': datetime.datetime(2016, 6, 3, 8, 32, 35), 'temp': 39.1}, {'date': datetime.datetime(2016, 6, 3, 9, 32, 35), 'temp': 39.1},{'date': None, 'temp': None}, {'date': datetime.datetime(2016, 6, 3, 11, 32, 35), 'temp': 39.1},{'date': None, 'temp': None}]
即它应该从列表中删除所有重复的条目,但如果有{'date':None,'temp':None}作为重复条件,它不应该删除。 我试过了
result = [i for n, i in enumerate(d) if i not in d[n + 1:]]
但如果有重复,则删除包括{'date':None,'temp':None}。我怎么能用python做到这一点?
答案 0 :(得分:0)
如果你对非列表理解解决方案没问题,那么试试这个:
>>> result = []
>>> for i in d:
... if (i not in result) or (i == {'date': None, 'temp': None}):
... result.append(i)
答案 1 :(得分:0)
您只需添加or
:
result = [i for n, i in enumerate(d) if i not in d[n + 1:] or i == {'date': None, 'temp': None}]