我正在从 URL 获取数据并对该数据进行一些处理。我现在已经到了需要消除重复项的地步。下面是我的程序的输出。
{u'Price': 133.84, u'@Number': u'1', u'Mw': 10}
{u'Price': 139.09, u'@Number': u'2', u'Mw': 15}
{u'Price': 144.34, u'@Number': u'3', u'Mw': 10}
{u'Price': 148.53, u'@Number': u'4', u'Mw': 10}
{u'Price': 152.52, u'@Number': u'5', u'Mw': 9}
{u'Price': 133.84, u'@Number': u'1', u'Mw': 10}
{u'Price': 139.09, u'@Number': u'2', u'Mw': 15}
{u'Price': 144.34, u'@Number': u'3', u'Mw': 10}
{u'Price': 148.53, u'@Number': u'4', u'Mw': 10}
{u'Price': 152.52, u'@Number': u'5', u'Mw': 9}
{u'Price': 133.84, u'@Number': u'1', u'Mw': 10}
{u'Price': 139.09, u'@Number': u'2', u'Mw': 15}
{u'Price': 144.34, u'@Number': u'3', u'Mw': 10}
{u'Price': 148.53, u'@Number': u'4', u'Mw': 10}
{u'Price': 152.52, u'@Number': u'5', u'Mw': 9}
我希望这是我的输出:
{u'Price': 133.84, u'@Number': u'1', u'Mw': 10}
{u'Price': 139.09, u'@Number': u'2', u'Mw': 15}
{u'Price': 144.34, u'@Number': u'3', u'Mw': 10}
{u'Price': 148.53, u'@Number': u'4', u'Mw': 10}
{u'Price': 152.52, u'@Number': u'5', u'Mw': 9}
@Number 可以在 1-7 之间。解决这个问题的最佳方法是什么?我是否需要获取 @Number 的最大值,然后打印与我的最大值一样多的行?
最佳答案
你可以为你已经看过的那个维护一个集合:
seen=set()
data=[]
for e in input:
if e["@Number"] not in seen:
seen.add(e["@Number"])
data.append(e)
>>> data
[{u'Price': 133.84, u'@Number': u'1', u'Mw': 10}, {u'Price': 139.09, u'@Number': u'2', u'Mw': 15}, {u'Price': 144.34, u'@Number': u'3', u'Mw': 10}, {u'Price': 148.53, u'@Number': u'4', u'Mw': 10}, {u'Price': 152.52, u'@Number': u'5', u'Mw': 9}]
如果您的数据总是有序的,并且一旦您打印了最大值,您的行就会完整,您可以这样做:
>>> input[0:max(int(e) for e in (d['@Number'] for d in input))]
[{u'Price': 133.84, u'@Number': u'1', u'Mw': 10}, {u'Price': 139.09, u'@Number': u'2', u'Mw': 15}, {u'Price': 144.34, u'@Number': u'3', u'Mw': 10}, {u'Price': 148.53, u'@Number': u'4', u'Mw': 10}, {u'Price': 152.52, u'@Number': u'5', u'Mw': 9}]
关于python - 从 Python 列表中删除重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29379553/