簡體   English   中英

從列表 python 列表中刪除重復的考慮一個元素

[英]Remove duplicated considering one element from a list of lists python

我基本上有一個這樣的列表:

[['1348559717', '11'],
 ['1348559717', '15'],
 ['1348562275', '16'],
 ['1348562275', '20'],
 ['1348562284', '17'],
 ['1348562284', '18'],
 ['1348562290', '19'],
 ['1349346149', '15'],
 ['1349348467', '14'],
 ['1350001260', '17']]

我想刪除索引 [0] 中包含重復值的列表。 此外,我總是需要擁有其索引 [1] = '20' 的列表,在本例中為['1348562275', '20'] 所以我想要的清單是:

[['1348559717', '11'],
 ['1348562275', '20'],
 ['1348562284', '17'],
 ['1348562290', '19'],
 ['1349346149', '15'],
 ['1349348467', '14'],
 ['1350001260', '17']]

有誰知道我該怎么做?

您可以使用字典,然后在處理后將其轉換回列表:

from pprint import PrettyPrinter

lst = [['1348559717', '11'],
       ['1348559717', '15'],
       ['1348562275', '16'],
       ['1348562275', '20'],
       ['1348562284', '17'],
       ['1348562284', '18'],
       ['1348562290', '19'],
       ['1349346149', '15'],
       ['1349348467', '14'],
       ['1350001260', '17']]

id_to_num = {}
for id_, num in lst:
    if id_ not in id_to_num or num == '20':
        id_to_num[id_] = num

new_lst = [[id_, num] for id_, num in id_to_num.items()]

PrettyPrinter().pprint(new_lst)

Output:

[['1348559717', '11'],
 ['1348562275', '20'],
 ['1348562284', '17'],
 ['1348562290', '19'],
 ['1349346149', '15'],
 ['1349348467', '14'],
 ['1350001260', '17']]

像這樣使用dict類型怎么樣?

some_list = [...] # your list what basically have 
some_dict = {item[0]: item[1] for item in some_list}

#always need to have the list which its index [1] = '20'
for k, v in [i for i in a if i[1] == '20']:
    some_dict[k] = v

some_list = [[k, v] for k, v in some_dict.items()]

Output:

[['1348559717', '15'], 
 ['1348562275', '20'], 
 ['1348562284', '18'], 
 ['1348562290', '19'], 
 ['1349346149', '15'], 
 ['1349348467', '14'], 
 ['1350001260', '17']]

希望您能更詳細地講述刪除重復值的規則。

您可能可以對其進行更多優化,但這是一個想法:

items = [['1348559717', '11'],
 ['1348559717', '15'],
 ['1348562275', '16'],
 ['1348562275', '20'],
 ['1348562284', '17'],
 ['1348562284', '18'],
 ['1348562290', '19'],
 ['1349346149', '15'],
 ['1349348467', '14'],
 ['1350001260', '17']]

    items_dict = {}
    for i in items:
      if i[0] not in items_dict or i[1] == '20':
        items_dict[i[0]] = i[1]
    items_list = []
    for k,v in items_dict.items():
      items_list.append([k, v])
    print(items_list)

Output:

[['1348559717', '11'],
 ['1348562275', '20'],
 ['1348562284', '17'],
 ['1348562290', '19'],
 ['1349346149', '15'],
 ['1349348467', '14'],
 ['1350001260', '17']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM