2016-12-19 5 views
1

아래의 코드 에서처럼 내가 먼저 목록에 값을 저장하지 않고 값의 집합을 사전에 직접 추가 할 수 있는지 궁금합니다. 내 생각은 tempD, tempR 및 tempA 변수를 생략하는 것입니다.동적으로 채워지는 사전

getD = {} 
getR = {} 
getA = {} 
count = -1 
for j in range(0, 180, 45): 
    count += 1 
    getD[count] = {} 
    getR[count] = {} 
    getA[count] = {} 
    tempD = [] 
    tempR = [] 
    tempA = [] 
    for k in range(len(lA)):   
     if (j <= lA[k] < j + step): 
      tempD.append(lD[k]) 
      tempR.append(lR[k]) 
      tempA.append(lA[k]) 
      getD[count] = tempD 
      getR[count] = tempR 
      getA[count] = tempA 
+0

허용되는 입력 및 예상 출력이 위 프로그램의 내용을 설명하십시오. –

+1

예. 이것을하기위한 가장 쉬운 방법은'defaultdict (list)'를 갖는 것입니다. 그러나 키가리스트 값을 가지고 있다면'd [key] .append (value)'를 할 수 있습니다. –

+0

왜 getD [ count]를'{}'와 함께 사용합니까? 여기 목록을 원하지 않니? 게다가, 당신은 그것을 어쨌든 덮어 씁니다, 그렇죠? – Samufi

답변

1

당신은 그래서 getD[count]이 목록으로 시작하는 defaultdict를 사용할 수 있습니다

from collections import defaultdict 

getD = defaultdict(list) 
getR = defaultdict(list) 
getA = defaultdict(list) 
count = -1 
for j in range(0, 180, 45): 
    count += 1 
    for k in range(len(lA)):   
     if (j <= lA[k] < j + step): 
      getD[count].append(lD[k]) 
      getR[count].append(lR[k]) 
      getA[count].append(lA[k]) 
+1

'getD'는'defaultdict'이어야하며'getD [count]'는리스트입니다. 다른 사람들과 동일합니다 –

+0

@PatrickHaugh 당신 말이 맞습니다! – Jkdc

0

이 정확히 질문이 아니었다 비록 : 귀하의 경우는 지능형리스트를 사용하는 것이 도움이 될 수 있습니다

getD = {} 
getR = {} 
getA = {} 
for count, j in enumerate(range(0, 180, 45)): 
    aBound = j + step 
    getD[count] = [lD[k] for k, a in enumerate(lA) if j <= lD[k] and a < aBound] 
    getR[count] = [lR[k] for k, a in enumerate(lA) if j <= lR[k] and a < aBound] 
    getA[count] = [a for a in lA if j <= a and a < aBound] 

이렇게하면 임시 배열을 없애고 더 효율적으로 사용할 수도 있습니다.

관련 문제