【问题标题】:Unique values in a row of a list, which don't repeat in the other rows列表行中的唯一值,在其他行中不重复
【发布时间】:2021-09-15 15:19:56
【问题描述】:

我有一个列表列表。每行都是一个带有数字的列表。这些数字可能会在下一行重复。

我想为每一行找到一个不会在列表的其余部分重复的数字。

我将列表保存在 .csv 文件中以使其更便于携带。这是它的第一行。

10000241;10006041;102458567;102463076;102465209;102468399;102471447;;;;;;;;;;
10000241;10006041;102457597;102458567;102459006;102463076;102471447;;;;;;;;;;
10000241;10000311;10059021;102456340;102458959;102460803;102464618;102465620;;;;;;;;;
10000241;10000311;102459290;102464008;102464618;102467881;102468156;;;;;;;;;;
10000241;10000311;102457895;102458959;102459289;102459290;102461512;102464618;102468503;;;;;;;;
1000021;10000241;102457597;102458567;102466421;102466422;102475670;;;;;;;;;;
10000241;102468922;102470951;102471518;;;;;;;;;;;;;
10000241;102457537;102458526;102460609;102461735;102462564;102465464;102470554;102470715;;;;;;;;

因此,例如,第一行的第一个值 (10000241) 已经出现在第二行中,因此不应选择此值。我可以看到值 102465209 在下一行中没有重复,所以应该选择这个值。对每个子顺序行执行相同的操作。

结果应该是这样的:

102465209 
102471447
...

我可以看到应该有某种类型的迭代器遍历每个元素和每一行检查重复,但我不能完全得到解决方案。

需要注意的是每一行都应该有一个值,否则应该有消息警告。

【问题讨论】:

    标签: python arrays list unique


    【解决方案1】:

    手表。

    您可以尝试这样做:

    lines_to_read = '''10000241;10006041;102458567;102463076;102465209;102468399;102471447;;;;;;;;;;
    10000241;10006041;102457597;102458567;102459006;102463076;102471447;;;;;;;;;;
    10000241;10000311;10059021;102456340;102458959;102460803;102464618;102465620;;;;;;;;;
    10000241;10000311;102459290;102464008;102464618;102467881;102468156;;;;;;;;;;
    10000241;10000311;102457895;102458959;102459289;102459290;102461512;102464618;102468503;;;;;;;;
    1000021;10000241;102457597;102458567;102466421;102466422;102475670;;;;;;;;;;
    10000241;102468922;102470951;102471518;;;;;;;;;;;;;
    10000241;102457537;102458526;102460609;102461735;102462564;102465464;102470554;102470715;;;;;;;;'''
    
    lines_to_read = lines_to_read.splitlines()
    
    list_to_fill = []
    for x in lines_to_read:
        list_to_fill.append(x.split(';'))
    
    final_list = []
    for element in list_to_fill:
        for item in element:
            if item:
                final_list.append(item)
                
    final_list = set(final_list)
    final_list
    
    

    如果您已经在使用列表,则可以跳过前两行代码。

    希望很有用。

    【讨论】:

    • 我无法真正得到我想要的结果。你看,我提供的示例数据有 8 行,列数可变。我正在寻找的结果是每行一个值,不会在任何其他行上重复。
    【解决方案2】:

    可以使用pythonset:

    l = [10000241,10006041,102458567,102463076,102465209,102468399,102471447]
    l2 = [10000241,10006041,102457597,102458567,102459006,102463076,102471447]
    list(set(l)-set(l2))
    >> [102465209, 102468399]
    

    【讨论】:

    • 您好,谢谢。但是,这并不能阻止下一行返回与例如“102465209”相同的值。据我了解,您的答案是返回每一行的唯一编号。
    猜你喜欢
    • 2018-06-12
    • 2020-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2021-09-16
    相关资源
    最近更新 更多