임의의 수의 사전 입력을 사용하고 모든 입력이 포함 된 새 사전을 만드는 함수를 만들려고합니다. 두 개의 키가 같으면 두 값이 모두 포함 된 값이어야합니다. 나는이 일을 succeded - 그러나, 나는 dict() 함수에 문제가있어. 파이썬 셸에서 수동으로 dict 함수를 수행하면 문제없이 새 사전을 만들 수 있습니다. 그러나이 함수가 내 함수에 포함되어 있으면 TypeError가 발생합니다. 여기 아래에있는 내 코드는 다음과 같습니다Python에서 TypeError의 dict() 문제 : 'tuple'객체를 호출 할 수 없습니다.
#Module 6 Written Homework
#Problem 4
dict1= {'Fred':'555-1231','Andy':'555-1195','Sue':'555-2193'}
dict2= {'Fred':'555-1234','John':'555-3195','Karen':'555-2793'}
def dictcomb(*dict):
mykeys = []
myvalues = []
tupl =()
tuplist = []
newtlist = []
count = 0
for i in dict:
mykeys.append(list(i.keys()))
myvalues.append(list(i.values()))
dictlen = len(i)
count = count + 1
for y in range(count):
for z in range(dictlen):
tuplist.append((mykeys[y][z],myvalues[y][z]))
tuplist.sort()
for a in range(len(tuplist)):
try:
if tuplist[a][0]==tuplist[a+1][0]:
comblist = [tuplist[a][1],tuplist[a+1][1]]
newtlist.append(tuple([tuplist[a][0],comblist]))
del(tuplist[a+1])
else:
newtlist.append(tuplist[a])
except IndexError as msg:
pass
print(newtlist)
dict(newtlist)
다음과 같이 내가 오류는 다음과 같습니다
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
dictcomb(dict1,dict2)
File "C:\Python33\M6HW4.py", line 34, in dictcomb
dict(newtlist)
TypeError: 'tuple' object is not callable
내가 파이썬 쉘, 인쇄 (newtlist)에서, 전술 한 바와 같이 제공합니다
[('Andy', '555-1195'), ('Fred', ['555-1231', '555-1234']), ('John', '555-3195'), ('Karen', '555-2793')]
이 출력을 복사하여 dict() 함수에 붙여 넣으면 :
dict([('Andy', '555-1195'), ('Fred', ['555-1231', '555-1234']), ('John', '555-3195'), ('Karen', '555-2793')])
{'Karen': '555-2793', 'Andy': '555-1195', 'Fred': ['555-1231', '555-1234'], 'John': '555-3195'}
은 내가 노력할 상관없이, 내 함수 내에서이 문제를 재현 할 수 없습니다 :
출력은 I 인, 원하는됩니다. 제발 도와주세요! 고맙습니다!