下面的函数接收以下列表:
L1= [[12345,75,'English'],
[23452,83,'Physics'],
[23560,81,'Statistics'],
[23415,61,'Computer'],
[23459,90,'Physics'],
[12345,75,'Computer'],
[23452,100,'Statistics']]
L2= [['a','English'],
['b','Physics'],
['c','Computer'],
['d','Statistics'],
['e','Philosophy']]
功能:
def TeachMarks (L1, L2):
teacherd=dict(L2) #key- teacher name, value- subject
Dc=dict.fromkeys(teacherd.values(),[]) #key-subj, value- empty list
for i in L1:
subj=i[2]
Dc[subj].append(i[0])
print '\n'
print Dc
L1中的每个内部列表的主题都位于[2]位置。 字典的每个键(Dc)都是一个主题,其值是一个空列表。 函数应该获取内部列表中的第一个元素,并将其添加到列表中,该列表是字典中相关主题的值。你知道吗
但当我运行它时,它实际上会将每个内部列表(L1)的第一个元素添加到每个值中。这是输出:
{'Statistics': [12345, 23452, 23560, 23415, 23459, 12345, 23452], 'Philosophy': [12345, 23452, 23560, 23415, 23459, 12345, 23452], 'Computer': [12345, 23452, 23560, 23415, 23459, 12345, 23452], 'Physics': [12345, 23452, 23560, 23415, 23459, 12345, 23452], 'English': [12345, 23452, 23560, 23415, 23459, 12345, 23452]}
我做错什么了?你知道吗
谢谢
对每个键重复使用相同的空列表。你知道吗
你可以用^{} 。这需要为每个新键调用一个工厂函数。传递它
list
,它将调用list()
来创建缺少的键:dict.fromkeys
对每个键使用相同的列表。你需要单独的清单,你应该使用听写理解。你知道吗相关问题 更多 >
编程相关推荐