py3k:将字典(字符串 - >数字)映射到列表(字符串)

时间:2011-11-02 15:52:52

标签: python python-3.x

假设我们有字典将字符串翻译成数字。

如何将其反转到列表中? 假设,我们可以用空字符串''填充未映射的数字。

此处示例如何运作:

>>> dic_into_list({'x':0, 'z':2, 'w':3})
['x', '', 'z', 'w']

3 个答案:

答案 0 :(得分:3)

d = {'x':0, 'z':2, 'w':3}
lst = [""] * (max(d.values()) + 1)
for k, v in d.items():
    lst[v] = k
print(lst)

打印

['x', '', 'z', 'w']

答案 1 :(得分:1)

最简单的方法是翻转dict,然后在dict中迭代到最大值(现在为关键字):

original = {'x':0, 'z':2, 'w':3}
d = dict((v, k) for k, v in original.iteritems())
print [d.get(i, '') for i in range(max(d) + 1)]

答案 2 :(得分:0)

我分享我当前的解决方案:(我在其他帖子中寻找更短和清除的实现):

def dic_into_list(dic):
    maxindex = max([v for i,v in dic.items()])
    dicrev = {num:name for name,num in dic.items()}
    l=[]
    for i in range(0,maxindex+1):
        if i in dicrev:
            l.append(dicrev[i])
        else:
            l.append('')
    return l