【问题标题】:why I cant append a row in a list?为什么我不能在列表中追加一行?
【发布时间】:2019-05-16 08:06:38
【问题描述】:

我有 2 个暗淡列表,其中包含一些列表中的重复元素,如下所示

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

我想做:

  • 创建 2 个名为 (duplicatedLists, uniqueLists) 的空列表
  • 读取每个 myData 列表中的第一列/(元素)
  • 如果唯一列表中不存在第一列/元素,则附加 整行到 uniqueLists
  • 如果它存在于 uniqueLists 中,则将整行追加到 duplicatedList(do 不附加到 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]]



[]

【问题讨论】:

    标签: python-3.x list listiterator


    【解决方案1】:

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

    【讨论】:

    • 我不明白你的意思到底是什么错误,但是,我喜欢你解决这个问题的方式。非常感谢您的帮助,我真的很感激它
    • 您的比较看起来像这样 "a" 不在 [['a',1,10],['b',2,20],['a',3,30],['a',4,40]]
    猜你喜欢
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多