首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我有一个元组列表,并希望创建一个只包含元组中的一个字符串的实例的列表。

我有一个元组列表,并希望创建一个只包含元组中的一个字符串的实例的列表。
EN

Stack Overflow用户
提问于 2017-04-07 11:35:54
回答 1查看 81关注 0票数 4

我有一个元组列表:

代码语言:javascript
复制
[(1, 'Twilight Sparkle', 2, 'Fluttershy'), (1, 'Twilight Sparkle', 3,
'Applejack'), (1, 'Twilight Sparkle', 4, 'Pinkie Pie'), (1, 'Twilight
Sparkle', 5, 'Rarity'), (1, 'Twilight Sparkle', 6, 'Rainbow Dash'),
(1, 'Twilight Sparkle', 7, 'Princess Celestia'), (1, 'Twilight
Sparkle', 8, 'Princess Luna'), (2, 'Fluttershy', 3, 'Applejack'), (2,
'Fluttershy', 4, 'Pinkie Pie'), (2, 'Fluttershy', 5, 'Rarity'), (2,
'Fluttershy', 6, 'Rainbow Dash'), (2, 'Fluttershy', 7, 'Princess
Celestia'), (2, 'Fluttershy', 8, 'Princess Luna'), (3, 'Applejack', 4,
'Pinkie Pie'), (3, 'Applejack', 5, 'Rarity'), (3, 'Applejack', 6,
'Rainbow Dash'), (3, 'Applejack', 7, 'Princess Celestia'), (3,
'Applejack', 8, 'Princess Luna'), (4, 'Pinkie Pie', 5, 'Rarity'), (4,
'Pinkie Pie', 6, 'Rainbow Dash'), (4, 'Pinkie Pie', 7, 'Princess
Celestia'), (4, 'Pinkie Pie', 8, 'Princess Luna'), (5, 'Rarity', 6,
'Rainbow Dash'), (5, 'Rarity', 7, 'Princess Celestia'), (5, 'Rarity',
8, 'Princess Luna'), (6, 'Rainbow Dash', 7, 'Princess Celestia'), (6,
'Rainbow Dash', 8, 'Princess Luna'), (7, 'Princess Celestia', 8,
'Princess Luna')]

我想从它创建一个只有第一次出现字符串的列表,在这个例子中,我希望列表是:

代码语言:javascript
复制
[(1, 'Twilight Sparkle', 2, 'Fluttershy'), (3, 'Applejack', 4, 'Pinkie
Pie'),(5, 'Rarity', 6, 'Rainbow Dash'), (7, 'Princess Celestia', 8,
'Princess Luna')]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-07 11:50:08

您可以保留已经使用过的元素的set

只有在之前没有使用过任何元素的情况下,才向结果添加元组:

代码语言:javascript
复制
data = [(1, 'Twilight Sparkle', 2, 'Fluttershy'), (1, 'Twilight Sparkle', 3, 'Applejack'), (1, 'Twilight Sparkle', 4, 'Pinkie Pie'), (1, 'Twilight Sparkle', 5, 'Rarity'), (1, 'Twilight Sparkle', 6, 'Rainbow Dash'), (1, 'Twilight Sparkle', 7, 'Princess Celestia'), (1, 'Twilight Sparkle', 8, 'Princess Luna'), (2, 'Fluttershy', 3, 'Applejack'), (2, 'Fluttershy', 4, 'Pinkie Pie'), (2, 'Fluttershy', 5, 'Rarity'), (2, 'Fluttershy', 6, 'Rainbow Dash'), (2, 'Fluttershy', 7, 'Princess Celestia'), (2, 'Fluttershy', 8, 'Princess Luna'), (3, 'Applejack', 4, 'Pinkie Pie'), (3, 'Applejack', 5, 'Rarity'), (3, 'Applejack', 6, 'Rainbow Dash'), (3, 'Applejack', 7, 'Princess Celestia'), (3, 'Applejack', 8, 'Princess Luna'), (4, 'Pinkie Pie', 5, 'Rarity'), (4, 'Pinkie Pie', 6, 'Rainbow Dash'), (4, 'Pinkie Pie', 7, 'Princess Celestia'), (4, 'Pinkie Pie', 8, 'Princess Luna'), (5, 'Rarity', 6, 'Rainbow Dash'), (5, 'Rarity', 7, 'Princess Celestia'), (5, 'Rarity', 8, 'Princess Luna'), (6, 'Rainbow Dash', 7, 'Princess Celestia'), (6, 'Rainbow Dash', 8, 'Princess Luna'), (7, 'Princess Celestia', 8, 'Princess Luna')]

already_added = set()
result = []

for quad in data:
    if not any((x in already_added) for x in quad):
        for x in quad:
            already_added.add(x)
        result.append(quad)

print(result)
# [(1, 'Twilight Sparkle', 2, 'Fluttershy'), (3, 'Applejack', 4, 'Pinkie Pie'), (5, 'Rarity', 6, 'Rainbow Dash'), (7, 'Princess Celestia', 8, 'Princess Luna')]

请注意,此代码对应的是所需的输出,而不是问题中的描述。这个期望的输出更具有限制性,如果总是将某些元素耦合到已经看到的元素,那么有些元素将根本不会被添加。适用于:

代码语言:javascript
复制
data = [(1, 'a', 2, 'b'), (1, 'a', 3, 'c'), (2, 'b', 4, 'd')]

产出如下:

代码语言:javascript
复制
[(1, 'a', 2, 'b')]

看不到34cd

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43277128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档