我是Python的新手,我需要你的帮助。 我有一个用户输入,如:
5 72 245 62
我需要将这个整数分成这样的字典:
{1=5;2=72;3=245;4=62}
我尝试过类似的事情:
sequence = dict(x ,input().split())
x
正在递增计数器。
答案 0 :(得分:1)
如果您想要的最终结果是Python词典,那么我认为您非常接近。
你实际上可以使用python内置来实现这个名为enumerate
:
>>> values = input().split()
1 2 3 4
>>> values
['1', '2', '3', '4']
>>>
>>> sequence = dict(enumerate(values))
>>> sequence
{0: '1', 1: '2', 2: '3', 3: '4'}
enumerate
只需浏览任何可迭代的(例如字符串列表),并在元组中输出每个项目的索引和项目本身:
>>> for x in enumerate(values):
... print(x)
...
(0, '1')
(1, '2')
(2, '3')
(3, '4')
然后,您可以在dict
的迭代(tuples
生成的)上调用enumerate
,以便将它们转换为字典。
当然,enumerate
与大多数内容一样是零索引的,因此如果您想要启动1,您还可以传入起始数字:
>>> sequence = dict(enumerate(values, 1))
>>> sequence
{1: '1', 2: '2', 3: '3', 4: '4'}
您所拥有的问题
让我们说,如上所述,我们有一个字符串列表。为了将数字与列表中的每个字符串进行匹配,我们需要以下内容:
>>> dict([(1, '1'), (2, '2')...])
请注意,我将一个 参数传递给dict
:一个元组列表,其中列表中的每个项目都显示为(1, '1')
和我有一个容器拿着所有。
您的尝试如下:
>>> sequence = dict(x ,input().split())
这可能解释为(猜测x
):
>>> dict(1, ['1', '2', '3'])
产生以下回溯:
>>> dict(1, [1, 2, 3])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: dict expected at most 1 arguments, got 2
您将两个参数传递给dict
,而不是一个,这是它所期望的。
它期望某种容器中有一堆东西,其中每个东西的第一个元素映射到第二个元素,如下所示:
>>> [(1, '1'), (2, '2')]