почему я не могу добавить строку в список? - PullRequest
2 голосов
/ 16 мая 2019

У меня есть 2 затемненных списка, которые содержат дублированные элементы в некоторых списках, как показано ниже

  myData=[['a',1,10],['b',2,20],['a',3,30],['a',4,40]]

Я хочу сделать:

  • создать 2 пустых списка с именем (duplicatedLists, uniqueLists)
  • читать первый столбец / (элемент) в каждом списке myData
  • если первый столбец / элемент не существует в uniqueLists, тогда добавьте весь ряд уникальных списков
  • если он существует в uniqueLists, тогда добавьте всю строку в duplicatedList (сделайте не добавляется в uniqueList)

Я написал код ниже:

duplicatedLists=[]

uniqueLists=[]

myData=[['a',1,10],['b',2,20],['a',3,30],['a',4,40]]

for row in myData:

    print(row[0])


    if(row[0] not in uniqueLists):

        uniqueLists.append(row)

    else:

        duplicatedLists.append(row)

print(uniqueLists)

print(duplicatedLists)


so my result should be:

    uniqueLists=[['a',1,10],['b',2,20]]

    duplicatedLists=[[['a',3,30],['a',4,40]].

однако я получаю этот результат:

[['a', 1, 10], ['b', 2, 20], ['a', 3, 30], ['a', 4, 40]]



[]

1 Ответ

0 голосов
/ 16 мая 2019

В этой строке есть проблема if(row[0] not in uniqueLists): Вы проверяете первый элемент, но добавляете весь подсписок в uniqueLists список

Вместо этого попробуйте:

myData=[['a',1,10],['b',2,20],['a',3,30],['a',4,40]]
duplicatedLists=[]
uniqueLists=[]
check_val = set()
for i in myData:
    if i[0] not in check_val:     #Check if value in set. 
        uniqueLists.append(i)
        check_val.add(i[0])       #! Add only first element to perform check. 
    else:
        duplicatedLists.append(i)

print(uniqueLists)       #[['a', 1, 10], ['b', 2, 20]]
print(duplicatedLists)   #[['a', 3, 30], ['a', 4, 40]]
...