我有一个元组,其中填充了目录中的元素:
{'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)
非常感谢这方面的任何帮助!如果我以错误的方式去做,请告诉我。
谢谢!
答案 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