2016-11-01 2 views
1

내가 디렉토리의 요소로 채워집니다 튜플이 값 :적절한 방법은 키 튜플을 연결하고

{'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) 

이 부분에 대한 도움을 주시면 매우 감사하겠습니다. 내가 잘못된 방향으로 가고 있다면 나에게 말해줘.

감사합니다!

+1

, 해당 키의 값을 통해 다음 키를 통해 루프, 루프를해야합니다. –

+2

튜플이 아닌 문자열 키와리스트 값의 사전이라는 것을 알았다면 연구가 더 쉬울 것입니다. – jonrsharpe

+0

예를 들어, 예, 그것은 사전입니다. os.walk를 사용하고 있으며 튜플을 반환합니다. – i73

답변

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을 사용해야합니다. 이 경우 올바른 수의 슬래시 (필요한 경우 이스케이프 포함) 및 슬래시 유형 (앞으로 대 앞으로)을 확인하십시오.

+0

감사합니다, 코리! – i73

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 
+0

아, 고마워. 나는 예제를 보여 주었고, 실제 코드에서 이것을 사용하지는 않습니다. – i73

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'] 
+0

대단히 고마워요! – i73

관련 문제