gpt4 book ai didi

python - 字典 python 中的匹配值

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:03 24 4
gpt4 key购买 nike

我有一个元组列表。元组包含文件名和下载 URL。我已经从一个 csv 文件中导入了这些文件名和下载 url,许多文件名、下载 url 对是相同的,但有些不是。

我需要将这些元组添加到字典中,而不需要将文件名加倍,但要确保收集所有唯一的下载 URL。我在想关键可能是文件名,值是该文件的所有唯一下载 url 的列表。我对 python 还是很陌生,所以我在完成这项工作时遇到了问题。

给定:

current_list = [('filename1', 'url1'), ('filename1', 'url2'), ('filename1', 'url3'), 
('filename2', 'url1'), ('filename2', 'url2'), ('filename2', 'url3')]

我需要的词典:

result = {'filename1' : ['url1', 'url2', 'url3'],
'filename2' : ['url1', 'url2', 'url3']}

如有任何帮助,我们将不胜感激。

最佳答案

如果您想要与每个唯一文件关联的唯一 url,您可以使用 setdict,其中 dict 是您的文件名,值是 url 的。使用集合可确保仅保留唯一的 url。

为了更容易地向 dict 添加 url,您可以使用 defaultdict,它在添加新键时具有默认行为。在这种情况下,默认行为应该是创建一个空的 set 来添加 url。

要添加您的数据,请循环遍历您的 (file, url) 元组列表,将每个 url 添加到与该文件关联的 url 集中。

from collections import defaultdict

current_list = [('file1', 'url1'), ('file1', 'url2'), ('file1', 'url3'),
('file2', 'url4'), ('file2', 'url5'), ('file2', 'url6')]

result = defaultdict(set)

for file_name, url in current_list:
result[file_name].add(url)

print result
# prints:
# defaultdict(<type 'set'>, {'file2': set(['url5', 'url4', 'url6']), 'file1': set(['url1', 'url3', 'url2'])})

构建字典后,您可以通过使用 iteritems 遍历 (key,value) 对来处理内容,并使用内部循环处理各个 url:

for file_name, url_set in result.iteritems():

# do something with file_name here...
print file_name

# access urls like this:
for url in url_set:
print url

关于python - 字典 python 中的匹配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809819/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com