字典将许多值更改为多个键

时间:2011-12-15 06:54:47

标签: python dictionary key

我只是想知道在Python的精彩世界中是否有任何方法可以从这样的事情出发:

dict1 = {'a': [1,2,3], 'b': [4,5,6]}

dict2 = {'a':1, 'a':2, 'a':3,'b':4, 'b': 5, 'b': 6]

或等价,顺序是无关紧要的,但我需要一些方法将dict1分解成一些东西,我可以将数值分配给新列表的索引,并将密钥作为这些索引的实际值,例如dict1会变成:

[0, a, a, a, b, b, b] 

任何帮助都会受到赞赏,虽然越是白痴证明答案越好。

我再次感激你了。

2 个答案:

答案 0 :(得分:5)

您的dict2毫无意义,因为字典键必须是唯一的。

我很确定你可以通过迭代dict1.items()来获得你想要的东西,但我需要更多关于预期输出列表的说明......在你的示例中a和{{ 1}}未定义,我不知道开始时b代表什么。

也许你想要这样的东西?

0

这会为您提供dict2 = {} for k,v in dict1.items(): for x in v: dict2[x] = k dict2。请注意,此循环可能会覆盖解压缩的{1: 'a', 2: 'a', 3: 'a', 4: 'b', 5: 'b', 6: 'b'}值中的重复条目。


只是为了屎和咯咯笑,在一行中同样的事情是 难以理解的字典理解

dict1

答案 1 :(得分:2)

如果值代表索引,那么:

import itertools

dict1 = {'a': [1,2,3], 'b': [4,5,6]}

L = [None]*(max(itertools.chain(*dict1.values())) + 1)
for word, indexes in dict1.items():                          
    for i in indexes:                                     
        L[i] = word
print(L)
# -> [None, 'a', 'a', 'a', 'b', 'b', 'b']