我发誓我是第一个搜索的,找到了很多“如果改编就可以工作”,但没有什么真正帮助我。我有一个元组列表,格式如下:
[('', 'noreply@bookfresh.com'), ('Andrea', 'andrea@aaa.com'), ('Your Book', 'noreply@bookfresh.com'), ..]
在本例中,它是一个元组列表,在所有索引中,第一个值是“Name”,第二个值是“Email”。而且这个列表还没有按任何特定的方式排序。你知道吗
我需要的是一个清晰易懂的方法(我不一定要找一个连我都看不懂的行文)来生成一个“非限定”列表,但要有以下规则/注意事项:
在这个最小化的例子中,最终的输出是: 你知道吗
[('Andrea', 'andrea@aaa.com'), ('Your Book', 'noreply@bookfresh.com'), ..]
不管输出是否有序,因为我知道如何对未排序的元组列表进行排序。谢谢
可能最简单的方法是使用如下集合:
但是,如果您想保留最后一项,您可以使用它(最后,您可能希望反转
result_L
):还有很多其他的方法可以做到这一点。例如,考虑使用
dict
:方法1:收集所有的名字
如果我们想要的是最容易理解的版本,而不是最圆滑的,也许是类似的
会有用的。这将问题分为两部分:以电子邮件地址为键,以可能的名称列表为值构建字典;循环遍历所有电子邮件地址并获取最长的名称。你知道吗
第一部分可以用
setdefault
压缩,例如但不是每个人都熟悉。你知道吗
方法2:排序并使其唯一
或者,我们可以一次按电子邮件和名称长度排序,然后从中构建一个字典,只保留最后一个键/值对:
你可以用第二个词条作为你的键来建立一个字典。词典有一个恰当的做法,即在其关键字中不包含任何重复项。如果在构建字典之前按第一个元素的长度排序,它将为您提供所需的内容:
如果您需要列表形式的输出,您可以通过
out_list = list(out.items())
来获得它。你知道吗相关问题 更多 >
编程相关推荐