我的项目需要这么多次,我希望这里有人能给我一个优雅的写作方式。
我有一个字符串列表,并希望使用类似键/键的功能过滤掉重复项(就像我可以使用sorted([foo, key=bar))
一样。
最近,我正在处理链接。
目前我必须创建一个空列表,并在
中添加值注意:name
是链接所链接文件的名称 - 只是正则表达式匹配
parsed_links = ["http://www.host.com/3y979gusval3/name_of_file_1",
"http://www.host.com/6oo8wha55crb/name_of_file_2",
"http://www.host.com/6gaundjr4cab/name_of_file_3",
"http://www.host.com/udzfiap79ld/name_of_file_6",
"http://www.host.com/2bibqho4mtox/name_of_file_5",
"http://www.host.com/4a31wozeljsp/name_of_file_4"]
links = []
[links.append(link) for link in parsed_links if not name(link) in
[name(lnk) for lnk in links]]
我希望最终列表具有完整链接(因此我不能只删除除文件名和使用集之外的所有内容);但是我希望每次都能创建一个空列表。
此外,我目前的方法似乎效率低下(这很重要,因为它经常处理数百个链接)。
有什么建议吗?
答案 0 :(得分:3)
为什么不使用字典?
links = dict((name(link), link) for link in parsed_links)
答案 1 :(得分:0)
如果我正确理解了您的问题,那么您的性能问题可能来自于在紧密循环中反复评估的列表理解。
尝试通过将列表推导放在循环之外来缓存结果,然后在空列表中使用另一个解释而不是append()
:
linkNames = [name(lnk) for lnk in links]
links = [link in parsed_links if not name(link) in linkNames]