如何找出列表中具有相同内容的元素?

2024-04-25 12:19:27 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的列表中,包含一些内容相同的元素。你知道吗

例如,“A120 v.s.B127”和“B127 v.s.A120”自然具有相同的内容,因此在本例中只有“B127 v.s.A120”被视为重复。你知道吗

我想找出哪些是重复的:

a_list = [

"A120 v.s. B127",
"A125 v.s. B105",
"A122 v.s. B141",
"A150 v.s. B100",
"A147 v.s. B141",
"B127 v.s. A120",
"B100 v.s. A150"

]

for a in a_list:
    flip = a.split(' v.s. ')[1] + " v.s. " + a.split(' v.s. ')[0]
    if flip in a_list:
        print a + " is a duplicate."

但是,代码会标记更多(也是第一次出现)重复项:

A120 v.s. B127 is a duplicate.
A150 v.s. B100 is a duplicate.
B127 v.s. A120 is a duplicate.
B100 v.s. A150 is a duplicate.

怎样才能只输出实际的副本?你知道吗

B127 v.s. A120 is a duplicate of A120 v.s. B127.
B100 v.s. A150 is a duplicate of A150 v.s. B100

谢谢你。你知道吗


Tags: ofin元素内容列表islistsplit
3条回答

具有哈希dict键的简短解决方案:

a_list = [
    "A120 v.s. B127", "A125 v.s. B105", "A122 v.s. B141",
    "A150 v.s. B100", "A147 v.s. B141", "B127 v.s. A120",
    "B100 v.s. A150"
]

d = {}
for s in a_list:
    items = tuple(sorted(s.split()))
    if items in d:
        print(s, 'is a duplicate of', d[items])
    else:
        d[items] = s

输出:

B127 v.s. A120 is a duplicate of A120 v.s. B127
B100 v.s. A150 is a duplicate of A150 v.s. B100

您可以使用set进行快速查找,并使用排序的元组来确定某个内容是否重复,而不考虑顺序:

a_list = [
"A120 v.s. B127",
"A125 v.s. B105",
"A122 v.s. B141",
"A150 v.s. B100",
"A147 v.s. B141",
"B127 v.s. A120",
"B100 v.s. A150"
]

seen_set = set()

for line in a_list:
    pair = line.split(' v.s. ')
    sorted_pair = tuple(sorted(pair))
    if sorted_pair in seen_set:
        print('{} is a duplicate of {}'.format(' v.s. '.join(pair), ' v.s. '.join(pair[::-1])))
    seen_set.add(sorted_pair)

输出:

B127 v.s. A120 is a duplicate of A120 v.s. B127
B100 v.s. A150 is a duplicate of A150 v.s. B100
a_list = [

"A120 v.s. B127",
"A125 v.s. B105",
"A122 v.s. B141",
"A150 v.s. B100",
"A147 v.s. B141",
"B127 v.s. A120",
"B100 v.s. A150"
]
tmp=[]
for v,i in enumerate(a_list):
    if v not in tmp:
        var =' '.join(i.split()[::-1])
        if var in a_list:
            tmp.append(a_list.index(var))

            print('{} is duplicate of {}'.format(i, var))

输出

A120 v.s. B127 is duplicate of B127 v.s. A120
A150 v.s. B100 is duplicate of B100 v.s. A150

相关问题 更多 >

    热门问题