Python 将多个值更改为多个键的字典

Python 将多个值更改为多个键的字典,python,dictionary,key,Python,Dictionary,Key,我只是想知道,在Python的奇妙世界中,是否有任何方法可以从这样的事情开始: dict1 = {'a': [1,2,3], 'b': [4,5,6]} 到 或者等效的,顺序是不相关的,但我需要某种方法将dict1分解成某种东西,我可以将数值分配给新列表的索引和键,作为这些索引的实际值,例如dict1将变成: [0, a, a, a, b, b, b] 任何帮助都将不胜感激,尽管越能证明答案越愚蠢越好 我再次感谢你。你的dict2毫无意义,因为字典键必须是唯一的 我非常确信,通过迭代dic

我只是想知道,在Python的奇妙世界中,是否有任何方法可以从这样的事情开始:

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

或者等效的,顺序是不相关的,但我需要某种方法将dict1分解成某种东西,我可以将数值分配给新列表的索引和键,作为这些索引的实际值,例如dict1将变成:

[0, a, a, a, b, b, b] 
任何帮助都将不胜感激,尽管越能证明答案越愚蠢越好


我再次感谢你。

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

我非常确信,通过迭代
dict1.items()
,您可以得到您想要的,但我需要更多关于预期输出列表的说明。。。在您的示例中,
a
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
的未打包值中的重复条目可能会被此循环覆盖


就为了大便和傻笑,同样的事情在一行中作为一个不可理解的听写理解:


{x:k表示dict1中的(k,v)。items()表示dict2中的x}
您的
dict2
没有意义,因为字典键必须是唯一的

我非常确信,通过迭代
dict1.items()
,您可以得到您想要的,但我需要更多关于预期输出列表的说明。。。在您的示例中,
a
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
的未打包值中的重复条目可能会被此循环覆盖


就为了大便和傻笑,同样的事情在一行中作为一个不可理解的听写理解:


{x:k表示dict1中的(k,v)。items()表示v中的x}

如果值表示索引,则:

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']

如果值代表指数,则:

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']

这就是我所担心的,你知道不做中间的步骤就从dict1到最后的列表吗?是的,你可以迭代
dict1.items()
。。我将更新我的回答,以澄清列表中的项目将是字符串,所有这些都包含一个单词,而且我只包含了0,因为我从1开始编号,而不是像个白痴一样从0开始。真不敢相信我以前从未尝试过自己做过口述理解。今天我学到了一些新东西,非常感谢哎,难道没有人能很快告诉我如何找到这种东西的最大值吗?[[1,2,3],[6,7,0],[3,4,5]]我一直试图将项目附加到一个新列表中,但它不起作用:(这就是我担心的,你知道不做中间步骤就从dict1到最后的列表吗?是的,你可以迭代
dict1.items()
。我将更新我的回答,以澄清列表中的项目将是字符串,所有项目都包含一个单词,而且我只包含0,因为我从1开始编号,而不是像白痴一样从0开始编号。不敢相信我以前从未尝试过理解口述。我今天学到了一些新东西,非常感谢!:oI不要假设一些你可以很快告诉我如何找到这样的项目的最大值?[[1,2,3],[6,7,0],[3,4,5]]我一直试图将这些项目附加到一个新列表中,但它不起作用:(