python - 从 Python 列表中删除重复记录

标签 python list duplicates iteration

我正在从 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/

相关文章:

python - Flask Marshmallow 使用额外字段序列化多对多关系

python - 根据第三个列表中的随机项目,从两个列表之一中选择一个随机项目

r - 将元素添加到 R 中的列表(在嵌套列表中)

MySQL查询三张表省略列中重复项

bash - 使用 unix 实用程序删除连续的重复行

python - 如何通过 TCP/IP 损坏校验和

python - Django : How to count number of people viewed

python - 将文件添加到 tar 存档而不先保存

python - 如何在列表理解中执行多个操作

c - 在C中复制字符串(包括内存分配、指针等)