Python 如何将具有任意数量值的列表字典拆分为字典列表?

Python 如何将具有任意数量值的列表字典拆分为字典列表?,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我正在尝试将一个列表词典拆分为一个列表词典 我试着按照这些例子和步骤来做。这里的_2是用于Python2.x的,在Python3.x上似乎不起作用 这里的第一个链接示例几乎可以工作,除了我只将第一个字典键值对作为1列表返回 使用zip()将字典列表转换为字典列表 test_dict = { "Rash" : [1], "Manjeet" : [1], "Akash" : [3, 4] } res = [dict(zip(test_dict, i)) for i in zip(*test_dic

我正在尝试将一个列表词典拆分为一个列表词典

我试着按照这些例子和步骤来做。这里的_2是用于Python2.x的,在Python3.x上似乎不起作用

这里的第一个链接示例几乎可以工作,除了我只将第一个字典键值对作为1列表返回

使用zip()将字典列表转换为字典列表

test_dict = { "Rash" : [1], "Manjeet" : [1], "Akash" : [3, 4] } 
res = [dict(zip(test_dict, i)) for i in zip(*test_dict.values())] 
print ("The converted list of dictionaries " +  str(res)) 

Out: The converted list of dictionaries [{‘Rash’: 1, ‘Akash’: 3, ‘Manjeet’: 1}] 

DESIRED Out: The converted list of dictionaries [{‘Rash’: 1, ‘Akash’: 3, ‘Manjeet’: 1}, {‘Akash’: 4}]

当我用Python3在我的笔记本上运行代码时,它会将您输入的行打印为所需的输出。Perharps我对这个问题理解得不够透彻

这里有一个缓慢而脆弱的解决方案,没有铃铛或口哨(通常还有糟糕的命名):


除了这些例子,你还试过什么?可以理解的是,您可能找不到解决您的特定用例的东西。此外,看起来您正在尝试按索引对它们进行分组,因此对于第二个索引,您需要第二个字典。上面的示例是我得到的最接近所需答案的示例。是的,我正在尝试按值的键对值进行分组。键的值数量也不相同。运行示例时,我会得到转换后的字典列表[{'Rash':1,'Manjeet':1,'Akash':3},{'Rash':3,'Manjeet':4,'Akash':4}]我编辑了test_dict和输出以澄清我的问题。我编辑了test_dict和输出以澄清我的问题。
def dictlist_to_listdict(dictlist):
    output = []
    for k, v in dictlist.items():
        for i, sv in enumerate(v):
            if i >= len(output):
                output.append({k: sv})
            else:
                output[i].update({k: sv})
    return output


if __name__ == "__main__":
    test_dict = {"Rash": [1], "Manjeet": [1], "Akash": [3, 4]} 
    print(dictlist_to_listdict(test_dict))