删除列表中的重复项

remove duplicate items in list

当前代码:

mylist = [('x', 'Value1', 'Value2'), ('x', 'Value3', 'Value4')]

for item in mylist:
   item[0], item[1], item[2]

当前循环输出:

x, Value1 : Value2, 
x, Value3 : Value4

想要的输出:

x, "Value1 : Value2, Value3 : Value4"

(这些是我自己渲染的字符串冒号)

执行此操作的最佳和正确方法是什么?

(我在 .mako 模板中渲染它)

您可以使用字典解决此问题,如下所示

mylist = [('x', 'Value1', 'Value2'), ('x', 'Value3', 'Value4')]

d = {}

for item in mylist:
    x = item[0]
    if x in d:
        d[x].append((item[1], item[2]))
    else:
        d[x] = [(item[1], item[2])]

 for key in d:
    print key, d[key]

字典 d 使我们能够将所有重复出现的 item[0] 组合在一起,并将元组 (item[1], item[2]) 添加到与 item[0][ 的每个唯一值关联的列表中=15=]

相信您可以通过调整代码来获得您想要的输出格式

这段代码怎么样?

from collections import defaultdict

mylist = [('x', 'Value1', 'Value2'), ('x', 'Value3', 'Value4'), ('x2', 'value5', 'value6')]
result = defaultdict(list)
for item1, item2, item3 in mylist:
    result[item1].append({item2:item3})

print(result)

输出

defaultdict(<class 'list'>, {'x': [{'Value1': 'Value2'}, {'Value3': 'Value4'}], 'x2': [{'value5': 'value6'}]})

充分利用 collections.defaultdict!

import collections
mylist = [('x', 'Value1', 'Value2'), ('x', 'Value3', 'Value4')]
answer = collections.defaultdict(list)
for group in mylist:
    key = group[0]
    rest = group[1:]
    values = [x for x in rest]
    answer[key] += values

# Output
# In [5]: answer
# Out[5]: defaultdict(list, {'x': ['Value1', 'Value2', 'Value3', 'Value4']})

您可以为此使用字典,将第一个元素添加为键。 然后将最后 2 个项目添加为内部字典作为键和值。

mylist = [('x', 'Value1', 'Value2'), ('x', 'Value3', 'Value4'), ('y', 'vvvv', 'mmmm')]

d = {}

for item in mylist:
   d.setdefault(item[0], "")
   d[item[0]] += ", " if len(d[item[0]]) else ""
   d[item[0]] += "{}: {}".format(item[1], item[2])

result = []
for k, v in d.items():
    t = [k]
    t.append(v)
    result.append(tuple(t))

print(result)

它已经给了你想要的输出:

[('y', 'vvvv: mmmm'), ('x', 'Value1: Value2, Value3: Value4')]