请帮我完成这项功课:
makeA({0:1,2:1,4:2,6:1,9:1})
输出应该是这样的:
[1, 0, 1, 0, 2, 0, 1, 0, 0, 1]
Run Code Online (Sandbox Code Playgroud)
尝试列表理解:
def makeA(d, default=0):
"""Converts a dictionary to a list. Pads with a default element
Examples:
>>> makeA({0: 1, 2: 1, 4: 2, 6: 1, 9: 1})
[1, 0, 1, 0, 2, 0, 1, 0, 0, 1]
>>> makeA({3: 'kos'},'')
['', '', '', 'kos']
"""
maxElem = max(d)
return [d.get(x, default) for x in range(maxElem+1)]
Run Code Online (Sandbox Code Playgroud)
函数体的第一行找到dict中的最大键(因为dict对象在迭代时产生它们的键).如果最大键为5,则需要一个包含6个元素[0..6]的数组.
最后一行使用序列上的列表推导0 .. maxElem,并为该序列的每个值分配d该键的值或0(如果不存在).