繁体   English   中英

用计数器在字典上输入

[英]Input on dictionnary with a counter

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

5 72 245 62

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

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

我尝试了类似的东西:

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

其中x是递增计数器。

如果您想要的最终结果是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')

然后,您可以在可重复的tuplesenumerate产生的tuples上调用dict ,以将其变成字典。

当然,像大多数东西一样, 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')]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM