Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python字典中的匹配值_Python_List_Dictionary - Fatal编程技术网

python字典中的匹配值

python字典中的匹配值,python,list,dictionary,Python,List,Dictionary,我有一个元组列表。元组包含文件名和下载url。 我已经从csv文件导入了这些文件名和下载url,许多文件名和下载url对是相同的,但有些不是 我需要将这些元组添加到字典中,而不需要对文件名进行双重设置,但要确保收集所有唯一的下载URL。我想关键可能是文件名,值可能是该文件所有唯一下载URL的列表。我对python还是很陌生,所以在完成这项工作时遇到了一些问题 鉴于: current_list = [('filename1', 'url1'), ('filename1', 'url2'), ('f

我有一个元组列表。元组包含文件名和下载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,您可以使用
set
s的
dict
,其中
dict
的键是您的文件名,值是
set
s的URL。使用集合可以确保只保留唯一的URL

要使将URL添加到
dict
更容易,可以使用
defaultdict
,它在添加新键时具有默认行为。在这种情况下,默认行为应该是创建一个空的
集合
,url将添加到该集合中

要添加数据,请遍历(文件、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'])})

继续解决您的问题,直到您有了示例输入、所需的输出以及您为解决问题而编写的实际代码。@shakfu欢迎使用堆栈溢出!很高兴我能帮上忙--你还需要其他帮助吗?如果我已经完全回答了你的问题,你可以选择“接受”答案。我还有一个问题。我希望在将所有这些url添加到字典后,我能够使用urllib捕获每个url并单独下载。甚至不知道从哪里开始。我想我应该告诉我们的模块是urllib,但我似乎无法从值集中提取字符串“www.someurl.com/exename.exe”。我想我会用for循环遍历每个键的值集?然后分别拉动字符串?@shakfu我添加了一些代码来显示如何访问这些项目。那有帮助吗?是的,非常感谢。。为了一切。从现在开始,当我在这里提问时,我会尽量坚持正确的格式。
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