将JSON元素附加到列表,然后在Python中有效地删除重复项

时间:2011-01-07 04:20:22

标签: python arrays list dictionary duplicates

我有一个json文件,例如。

  

[{“fu”:“thejimjams”,“su”:   232104580},{“fu”:“thejimjams”,“su”:   216575430},{“fu”:“thejimjams”,“su”:   184695850}]

我需要将一堆json文件的所有值放在列表中的“su”类别中。所以每个文件(大约200个)都有自己的列表,然后我将组合列表并删除重复项。在我这样做以节省系统资源和时间时,是否存在并且可取?

我正在考虑制作一个列表,循环浏览json文件,将每个“su”放在列表中,然后转到下一个文件然后追加列表,然后扫描以删除重复项。

就删除重复内容而言,我正在考虑关注这个问题的答案:Combining two lists and removing duplicates, without removing duplicates in original list除非效率不高

基本上对有关实施此方法的好方法的建议持开放态度。

谢谢,

3 个答案:

答案 0 :(得分:4)

你关心订单吗?如果没有,您可以将数字添加到set(),这将自动删除重复项。例如,如果您有200个“su”列表:

lists = [
    [...su's for file 1...],
    [...su's for file 2...],
    etc.
]

然后你可以将它们组合成一个大集合:

set(su for sus in lists for su in sus)

答案 1 :(得分:1)

非常直接的方式是:

json_list = [{"fu": "thejimjams", "su": 232104580}, {"fu": "thejimjams", "su": 216575430}, {"fu": "thejimjams", "su": 184695850}]

new_list = []
for item in json_list:
    if item not in new_list:
        new_list.append(item)

答案 2 :(得分:1)

使用旨在保留唯一元素列表的python set。这将在您添加元素时删除重复项。

output = set()
for filename in filenames:
    data = json.loads(open(filename, 'r').read())
    for row in data:
        output.add(row.get('su'))

# convert back to a list
output = list(output)