2011-01-07 2 views
1

У меня есть json-файл, похожий на, например.Добавить элементы JSON в список, а затем удалять дубликаты эффективно в Python

[{ "фу": "thejimjams", "су": 4580}, { "фу": "thejimjams", "су": 216575430}, { "фу": "thejimjams", «су»: 184695850}]

мне нужно поставить все значения для связки JSon файлов в категории «су» в списке. Поэтому каждый файл (около 200) будет иметь свой собственный список, тогда я собираюсь объединить список и удалить дубликаты. Есть ли и целесообразно, когда я делаю это, чтобы сохранить системные ресурсы и время?

Я собираюсь сделать список, пропустить через json-файл, чтобы каждый «su» поместил его в список, перейдите к следующему файлу, затем добавьте список, затем сканируйте, чтобы удалить дубликаты.

С точки зрения удаления дубликатов я думаю после того, что ответ был на этот вопрос: Combining two lists and removing duplicates, without removing duplicates in original list если это не не эффективно

В основном открыты для рекомендаций по хорошим способом для осуществления этого.

Thanks,

ответ

4

Вас интересует заказ? Если нет, вы можете добавить цифры в set(), который автоматически удалит дубликаты. Например, если у вас есть 200 "Су" списки:

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

Затем вы можете объединить их в один большой набор с:

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

Благодарим, что я в основном принял этот подход, как только все упомянутые наборы в качестве решения, я увижу, если реализация 'set (su для суса в списках для su in sus)' улучшает производительность. – eWizardII

0

Очень прямо вперед, как бы:

json_list = [{"fu": "thejimjams", "su":4580}, {"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) 
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) 
Смежные вопросы