回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在尝试创建一个函数,它将接受任意数量的字典输入,并创建一个包含所有输入的新字典。如果两个键相同,则该值应为一个列表,其中包含两个值。我已经成功地做到了这一点——但是,dict()函数有问题。如果我在python shell中手动执行dict函数,我就可以创建一个新的字典而不会有任何问题;但是,当它嵌入到我的函数中时,我会得到一个TypeError。下面是我的代码:</p>
<pre><code>#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.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(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)
</code></pre>
<p>我得到的错误如下:</p>
<pre><code>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
</code></pre>
<p>如上所述,在python shell中,print(newtlist)给出:</p>
<pre><code>[('Andy', '555-1195'), ('Fred', ['555-1231', '555-1234']), ('John', '555-3195'), ('Karen', '555-2793')]
</code></pre>
<p>如果将此输出复制并粘贴到dict()函数中:</p>
<pre><code>dict([('Andy', '555-1195'), ('Fred', ['555-1231', '555-1234']), ('John', '555-3195'), ('Karen', '555-2793')])
</code></pre>
<p>输出变成我想要的,即:</p>
<pre><code>{'Karen': '555-2793', 'Andy': '555-1195', 'Fred': ['555-1231', '555-1234'], 'John': '555-3195'}
</code></pre>
<p>不管我做什么,我都不能在我的函数中复制这个。请帮帮我!谢谢您!</p>