2014-10-14 2 views
0

이 문제에 약간의 도움이 필요 :파이썬 사전과 튜플 추가

을 내가 가지고있는 다음 코드를

def insertIntoDataStruct(state,job,count,dict): 
    if not state in dict: 
     print "adding" 
     dict[state] = [(job,count)] 
    else: 
     for x in range(0, len(dict[state])): 
      if(dict[state][x][0] == job): 
       print "hi" 
       print dict[state][x][0] 
       print job 
       print state 
       print dict[state][x][1] 
       dict[state][x][1] = dict[state][x][1] + 1 
      else: 
       dict[state].append((job,count)) 

courses = {} 

insertIntoDataStruct("CA", "2121", (1), courses) 
insertIntoDataStruct("CA", "169521", 1, courses) 
insertIntoDataStruct("CA", "2121", 1, courses) 
insertIntoDataStruct("TX", "2121", 1, courses) 
insertIntoDataStruct("TX", "169521", 1, courses) 
insertIntoDataStruct("TX", "262420", 1, courses) 

print courses 

나는이 오류가 무엇입니까 :

adding File "test2.py", line 21, in <module> 
hi 
insertIntoDataStruct("CA", "2121", 1, courses) 
2121 
File "test2.py", line 13, in insertIntoDataStruct 
2121 
dict[state][x][1] = dict[state][x][1] + 1 
CA 
TypeError: 'tuple' object does not support item assignment 
1 

Process finished with exit code 1 

어떻게을 내가 수정에 대해 갈 : TypeError : 'tuple'객체가 항목 할당을 지원하지 않는다.

이상적인 outp 이 코드의 ut은 다음과 같아야합니다.

{ 
'CA': [('2121', 2), ('169521', 1), ('2122', 1)], 
'TX': [('2121', 1), ('169521', 1), ('262420', 1)] 
} 

감사합니다.

+0

'[(job, count)]'는리스트 안에있는 튜플입니다. 튜플은 변경 불가능합니다. 즉, 변경할 수 없습니다. 13 행에서 튜플 내부의 값을 변경하려고 시도하는 것 같습니다. 카운터를 증가시키기 위해'collections'을 체크해볼 수도 있습니다 : https://docs.python.org/2/library/collections.html –

답변

0

tuple은 변경할 수 없습니다. 따라서 dict[state][x][1] = dict[state][x][1] + 1 줄을 실행하려고 할 때 왼쪽이 튜플 ('2121', 1) 인 경우 'tuple' object does not support item assignment 오류가 발생합니다.

+0

감사합니다! 이것은 많이 도왔다 :) –

+0

물론, 아무 문제. – khampson

0
dict[state][x][1] = dict[state][x][1] + 1 

여기서 항목 할당을 할 수 없습니다. 나의 이해는 당신이 작업 ID를 증가시키고 새로운 작업과 사전에 코스를 추가 할 것입니다, 당신이 할 수있는 일은 내가 사전에 작업을 증가하고 추가 한 다음

new_job = str(int(dict[state][x][1])+1) 
dict[state].append((new_job, count)) 

입니다