考虑从列表 python 列表中删除重复的一个元素

时间:2021-04-02 15:18:47

标签: python python-3.x list duplicates

我基本上有一个像这样的列表:

[['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']]

有人知道我该怎么做吗?

3 个答案:

答案 0 :(得分:1)

您可以使用字典,然后在处理后将其转换回列表:

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)

输出:

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

答案 1 :(得分:1)

像这样使用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()]

输出:

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

希望你能更详细的告诉我删除重复值的规则。

答案 2 :(得分:1)

您可能可以对其进行更多优化,但想法如下:

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)

输出:

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