将元组与键和值连接的正确方法

时间:2016-11-01 18:21:45

标签: python tuples

我有一个元组,其中填充了目录中的元素:

{'C:/foo' : ['bar1', 'bar2'], 'C:/foo2' : ['bar']}

我试图将每个键与其值连接起来:

C:/foo/bar1
C:/foo/bar2
C:/foo2/bar

我认为这样可行:

[''.join('%s/%s' % (d.keys(), value)) for value in d.values()] 

但它只是以与以下相同的方式将键与值连接:

for k,v in d.items():
  print(k'/'v) 

非常感谢这方面的任何帮助!如果我以错误的方式去做,请告诉我。

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以使用os.path.join以这种方式构建路径。

import os
d = {'C:/foo' : ['bar1', 'bar2'], 'C:/foo2': ['bar']}
for k,v in d.items():
    for value in v:
        print(os.path.join(k,value))

输出

C:/foo2\bar
C:/foo\bar1
C:/foo\bar2

然后确保使用os.path.normpath

以正确的方式使用斜杠
for k,v in d.items():
    for value in v:
        print(os.path.normpath(os.path.join(k,value)))

输出

C:\foo2\bar
C:\foo\bar1
C:\foo\bar2

要明确,您应该更喜欢使用os.path,因为它将以特定于操作系统的方式稳健地处理路径操作。在这种情况下,确保正确的斜杠数(包括必要时转义),以及哪种类型的斜杠(向前和向后)。

答案 1 :(得分:1)

首先需要遍历字典,然后遍历列表。

您可以在简单的列表推导中执行此操作,而无需使用for循环。

files_dict = {'C:/foo' : ['bar1', 'bar2'], 'C:/foo2' : ['bar']}
filenames = [dir+"/"+file for dir, files in files_dict.items() for file in files]

输出:

['C:/foo/bar1', 'C:/foo/bar2', 'C:/foo2/bar']

答案 2 :(得分:0)

你的元组列表中有一个拼写错误,冒号丢失了:

a = {'C:/foo' : ['bar1', 'bar2'], 'C:/foo2': ['bar']}

for key in a.keys():
    vals = a[key]
    for v in vals:
        concat = key + '/' + v
        print concat