Python 有没有一种方法可以从一行输入中生成词典?

Python 有没有一种方法可以从一行输入中生成词典?,python,python-3.x,list,dictionary,graph,Python,Python 3.x,List,Dictionary,Graph,我试图解决一个问题,需要所有条目都在一行输入中。条目的数量也由输入决定。这些条目表示有向图的顶点 起初,我考虑尝试使用列表进行求解,然后将列表转换为字典,即邻接列表: n = int(input()) lst = str(input()).strip().split(" ") lst = [int(i) for i in lst] if len(lst) != n: print('The number of entries is invalid!') 但是我不知道

我试图解决一个问题,需要所有条目都在一行输入中。条目的数量也由输入决定。这些条目表示有向图的顶点

起初,我考虑尝试使用列表进行求解,然后将列表转换为字典,即邻接列表:

n = int(input())
lst = str(input()).strip().split(" ")
lst = [int(i) for i in lst]
if len(lst) != n:
     print('The number of entries is invalid!')
但是我不知道如何将列表转换成字典

d = dict(zip(lst, lst[1:]))
示例:我的第一个输入
n=“3”
意味着我将有3个条目,因此如果我的下一个条目是
2,3,2
,列表将是
lst=['2','3','2']
,字典将是
{2:3,3:2}
。第一个输入数字是根,下一个是前一个数字的相邻数字。

使用
zip()
将列表的相邻元素配对,然后使用
dict()
构造函数将其转换为字典

d = dict(zip(lst, lst[1:]))

您可以进行字典理解,而不是列表理解:

theList = [3, 2,4, 5,6, 8,9]
myDict = {theList[i]:theList[i+1] for i in range(1,2*theList[0])}

(我在这里使用列表的第一个数字作为N,因此只需要一个输入)

谢谢!还有一个问题:如果需要将字典值转换为列表,该怎么办?例如:{2:[3],3:[2]}
d=dict(zip(lst,([x]代表lst[1:]))
hey!我发现了一个问题。在我的输入是2 3 4 1的情况下,结果应该是{2:[3,4],3:[2],4:[1]},但结果是{2:[4],3:[2],4:[1]},也就是说,最后一个值与已经存在的值重叠。如何解决这个问题?您需要编写一个循环来检查密钥是否已在字典中。创建新条目或附加到列表,具体取决于。