用计数器输入字典

时间:2015-11-11 20:25:01

标签: python-3.x

我是Python的新手,我需要你的帮助。 我有一个用户输入,如:

5 72 245 62

我需要将这个整数分成这样的字典:

{1=5;2=72;3=245;4=62}

我尝试过类似的事情:

sequence = dict(x ,input().split())

x正在递增计数器。

1 个答案:

答案 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')]