首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字典到稀疏向量Python

字典到稀疏向量Python
EN

Stack Overflow用户
提问于 2012-06-27 09:45:13
回答 2查看 2.7K关注 0票数 0

请帮我做这个作业:

makeA({0: 1,2: 1,4: 2,6: 1,9: 1})

输出应该如下:

代码语言:javascript
复制
[1, 0, 1, 0, 2, 0, 1, 0, 0, 1]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-27 09:47:33

试着理解一下清单:

代码语言:javascript
复制
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)]

函数主体的第一行在dict中找到最大键(因为dict对象在迭代时会产生它们的键)。如果最大键为5,则需要一个包含6个元素0..6的数组。

最后一行对序列0 .. maxElem使用列表理解,对于该序列的每个值,为该键分配d值,如果不存在,则分配0。

票数 5
EN

Stack Overflow用户

发布于 2012-06-27 10:55:17

是的,您可以在列表理解中执行默认值。但我认为让defaultdict类为您做这件事更好。您可以获得更多可读的代码来引导!!:-)

代码语言:javascript
复制
from collections import defaultdict

def makeA(d):
    dd = defaultdict(int, d)
    return [dd[n] for n in range(10)]


print makeA({0: 1, 2: 1, 4: 2, 6: 1, 9: 1})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11223418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档