我有一个包含 url 的列表:file_url_list
,打印为:
www.latimes.com, www.facebook.com, affinitweet.com, ...
还有另一个 Top 1M url 列表:top_url_list
,打印如下:
[1, google.com], [2, www.google.com], [3, microsoft.com], ...
我想找出 file_url_list
中有多少个 URL 在 top_url_list
中。我已经编写了以下有效的代码,但我知道这不是最快的方法,也不是最 pythonic 的方法。
# Find the common occurrences
found = []
for file_item in file_url_list:
for top_item in top_url_list:
if file_item == top_item[1]:
# When you find an occurrence, put it in a list
found.append(top_item)
我怎样才能以更高效和 pythonic 的方式编写它?
最佳答案
设置交集应该有所帮助。此外,您可以使用生成器表达式仅从 top_url_list
中的每个条目中提取 url。
file_url_list = ['www.latimes.com', 'www.facebook.com', 'affinitweet.com']
top_url_list = [[1, 'google.com'], [2, 'www.google.com'], [3, 'microsoft.com']]
common_urls = set(file_url_list) & set(url for (index, url) in top_url_list)
或等同地感谢Jean-François Fabre :
common_urls = set(file_url_list) & {url for (index, url) in top_url_list}
关于python - 如何以更高效和 pythonic 的方式编写以下代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43652633/