我有一个不寻常的任务。数据:
[(1566767777.0, 'Aaron Paul', 'dorety1', 'sfp_names', 'HUMAN_NAME', 100, 100, 0, '8ff7', '08f3', 'Human Name', 'ENTITY', '19fd', 0, 0),
(1566767863.0, 'Aaron Paul', "{'username': 'aaronpaul', 'last_name': 'Paul', 'friends_count': 509, 'is_group': False, 'is_active': True, 'trust_request': None, 'phone': None, 'profile_picture_url': 'http, 'is_blocked': False, 'id': '1690', 'identity': None, 'date_joined': '2015-05-22T18:58:12', 'about': ' ', 'display_name': 'Aaron Paul', 'first_name': 'Aaron', 'friend_status': None, 'email': None}", 'sfp_names', 'HUMAN_NAME', 100, 100, 0, '7049', 'a458', 'Human Name', 'ENTITY', '19fd', 0, 0),
(1566, 'Aaron Paul', 'Possible full name: Aaron Paul', 'sfp_names', 'HUMAN_NAME', 100, 100, 0, '6685', '235f', 'Human Name', 'ENTITY', '19fd', 0, 0),
(1566767503.0, 'Antoine Griezmann', 'dorety', 'sfp_names', 'HUMAN_NAME', 100, 100, 0, '16ab', '08f3', 'Human Name', 'ENTITY', '19fd', 0, 0),
(1566767108.0, 'Boris Johnson', 'dorety', 'sfp_names', 'HUMAN_NAME', 100, 100, 0, '7931', '08f3', 'Human Name', 'ENTITY', '19fd', 0, 0)]
我需要从[1]被复制而[3]不被复制的turples中获取值。也就是说,在上面的数据中,我们总是有相同的[3](sfp\U名称),在[1](Aaron Paul)的几个结果中,也就是说,从这个列表中,我们应该只得到(1566767777.0, 'Aaron Paul', 'dorety1' , 'sfp_names', 'HUMAN_NAME', 100, 100, 0, '8ff7', '08f3', 'Human Name', 'ENTITY', '19fd', 0, 0)
和另外两个名为Aaron Paul的结果。因为我们通常在它出现的列表数量上没有区别。我们需要从这三个列表中获得相同的值[['Aaron Paul', 'sfp_names']]
。但是如果我们有第三个模块名为sfp\u names\u2的turple,那么我们需要已经得到两个值,因为模块是不同的。[['Aaron Paul', 'sfp_names'], ['Aaron Paul', 'sfp_names_2']]
。你知道吗
关于我自己所做的,我没有想到这一部分;我只是有办法在清单中找到重复的内容。你知道吗
我明白我所描述的很难理解,所以我在下面给出了一些简单的例子来说明它应该如何工作
简单版本
数据:
[(0, 'Boby', 'beekeeper'), (1, 'Boby', 'beekeeper'), (2, 'Boby', 'beekeeper'), (3, 'Boby', 'gardener')]
结果:
['Boby', 'beekeeper']
或者
数据:
[(0, 'Boby', 'beekeeper'), (1, 'Boby', 'beekeeper'), (2, 'Boby', 'beekeeper'), (3, 'Boby', 'gardener'), (4, 'Boby', 'gardener'), (5, 'Jack', 'gardener')]
结果:
[['Boby', 'beekeeper'], ['Boby', 'gardener']]
如果我正确理解了您的问题,那么您希望从一个元组列表中获取所有元组,这些元组对于元组的某个特定元素具有重复值,但是只希望保留那些对于元组的其他特定元素具有不同值的重复组?你知道吗
如果是这样的话,我很抱歉地说你没有很好地解释这一点,我提到这一点是因为对一个问题有一个清晰的理解,这样你就可以用几句话来解释它,这也是编写代码的第一步。你知道吗
示例数据:
在本例中,假设您正在查看第1个(索引0)和第2个(索引1)元素,我希望您希望得到
[('a', 1, 0), ('a', 2, 0)]
。不包括带有'b'
的元组是因为没有秒,不包括带有'c'
的元组是因为有秒,但是它对于其他元素没有不同的值。你知道吗第二个例子
这里显示了一些您没有提到的内容。它们应该包括在内,因为第一个元素对所有元素都是相同的,而第二个元素不是相同的,但是应该包括所有三个元素,还是只包括第二个元素的
2
元组中的一个(随机的,或者第一个)?我想你会想要所有的,因为它们符合你的前两个标准。你知道吗我不完全确定我是否正确理解你:
你想得到一个列表的所有元素(元组),这些元素的条目集合在你的列表中多次出现?!你知道吗
如果将
itertools.groupby
与operator.itemgetter
结合起来,就可以实现紧凑的实现。这实际上会产生一个一行表达式:对于原始数据(
orig_data
如下),您将得到:作为替代方法,您可以单独使用
itemetter
操作符。其思想是将元素集合用作键,其值是该特定集合所在的元素索引列表。然后,如果此列表长于您选择的任何阈值(下面的redundancy
参数),我们将报告此特定集合:如果希望返回元素而不是重复的条目,则需要稍微调整
targets
的语句,因为sum(1...
将已经使用组迭代器。你知道吗下面是它的样子:
这将提供:
相关问题 更多 >
编程相关推荐