我只是想知道在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]
任何帮助都会受到赞赏,虽然越是白痴证明答案越好。
我再次感激你了。
答案 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']