按元组第一个值排列的唯一元组列表

0x0*_*01h 5 python tuples list unique python-3.x

如何以最 Pythonic 的方式根据元组的第一个值创建唯一的元组列表?

例子:

list_of_tuples = [('a', 1), ('a', 2), ('b', 3)]

# Apply here magical Pythonic one liner.

print(list_of_tuples)

[('a', 1), ('b', 3)]
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 5

使用itertools.groupby

[next(g) for _, g in groupby(tups, key=lambda x:x[0])]
Run Code Online (Sandbox Code Playgroud)

输出:

[('a', 1), ('b', 3)]
Run Code Online (Sandbox Code Playgroud)

如果原始列表需要排序:

tups = [('a', 1), ('a', 2), ('b', 3), ('a', 3)]

f = lambda x:x[0]
[next(g) for _, g in groupby(sorted(tups, key=f), key=f)]
Run Code Online (Sandbox Code Playgroud)

输出:

[('a', 1), ('b', 3)]
Run Code Online (Sandbox Code Playgroud)