Python 以列表作为值的字典

Python 以列表作为值的字典,python,dictionary,Python,Dictionary,给我一本字典 dict={"1":"2" , "2":"4"} 是否可以创建另一个字典,其中包含第一个字典的值列表作为值 例如,在本例中,输出为 dictionary={"1":["4","2"],"2":["4"]} 因为在第一节中,“1”是“2”的键,同时也是“4”的键。因此,我们在新词典中找到了 "1":["4","2"] 虽然“2”是4的键,但它不是另一个值的键 我如何实现这一点?试试这个 >>> dict1={"1":"2" , "2":"4"} >>

给我一本字典

dict={"1":"2" , "2":"4"}
是否可以创建另一个字典,其中包含第一个字典的值列表作为值

例如,在本例中,输出为

dictionary={"1":["4","2"],"2":["4"]}
因为在第一节中,“1”是“2”的键,同时也是“4”的键。因此,我们在新词典中找到了

"1":["4","2"]
虽然
“2”
4
的键,但它不是另一个值的键

我如何实现这一点?

试试这个

>>> dict1={"1":"2" , "2":"4"}
>>> for i in dict1.keys():
    appendvalue=[dict1.get(i)]
    if dict1.get(i) in dict1.keys():
        appendvalue.append(dict1.get(dict1.get(i)))
    dict1[i]=appendvalue


>>> dict1
{'1': ['2', '4'], '2': ['4']}
>>> 

这是个糟糕的问题,所以我只给你一个起点

dict1={"1":"2" , "2":"4", "4": "3"}

def list_maker(dictionary, key, list):
    if key not in dictionary:
        return [key] + list[:-1]
    else:
        return list_maker(dictionary, dictionary[key], [key] + list)

print(list_maker(dict1, "1", []))

看看能给你带来什么,然后从那里开始工作。你可以试试这样的方法:

dict={"1":"2" , "2":"4"}
final_dict={}
for index,item in dict.items():
    final_dict[index]=[item]
    if item in dict.keys():
        final_dict[index].extend([dict[item]])
print(final_dict)
输出:

{'2': ['4'], '1': ['2', '4']}

你是怎么写的,到底是什么问题?这个问题有点让人困惑,因为你似乎在交替使用字符串和数值(一个带引号的数字就是一个字符串)。在这种情况下,它不会显著影响答案,因此您应该决定是要
1
还是
“1”
,并明确要求。是的,这是可能的。你试过使用递归吗?我知道你想要
[4,2]
而不是
[2,4]
的原因吗?如果有两个以上的键和值链接,这是行不通的。你能举个例子吗?对于
{“1”:“2”,“2”:“4”,“4”:“5”,“5”:“6”}
如果我正确理解了问题,例如您给出的示例输出应该是
{“1”:[6”,“5”,“4”,“2'],'2'],'2':[6',[6',[5'],'5':[6']}
,而不是
{code>{1':[2':[2',[4',[5','5','5','5'],[5'],[6']>。不过,我可能错了。我没有想到这可能是他问的问题,为什么你要删除列表中的最后一个元素?此外,检查键是否在列表中可以避免无限循环。在我看来,这可以通过一个while循环来完成。我删除了列表的最后一个元素,因为它是原始的“key”参数,不应该出现在列表中。我敢肯定,使用while循环是很容易做到的。我使用递归,因为这对我来说是最明显的