如何转换下面的代码以接受一行输入?

时间:2017-10-03 12:13:10

标签: python python-2.7 list-comprehension

stu_dict = {raw_input():[float(raw_input()),float(raw_input()),float(raw_input())] for i in xrange(int(raw_input()))}
print stu_dict

对于上面的代码,Fox是关键,所有三个值都存储在列表(值)

I / P: 1
3
4
5
狐狸

o/p :
{'fox': [3.0, 4.0, 5.0]}

如何更改上面的代码,在一行中接受fox 3 4 5?

注意:到目前为止给出的所有解决方案,我都知道这些,我想要的是什么 直接从输入中取出fox 3 4 5(在同一行)(不存储在字符串中)并直接放入键,值字典对(这里的值是一个包含3个值的列表)。

4 个答案:

答案 0 :(得分:1)

如果列表的值以单行提供,则使用此 -

>>>stu_dict = {raw_input(): map(float,raw_input().split()) for _ in raw_input()}
1
3 4 5
fox
>>>stu_dict
{'fox': [3.0, 4.0, 5.0]}

如果您按照相关描述提供输入,请使用此 -

>>> stu_dict = {raw_input(): [float(raw_input()) for i in xrange(3)] for _ in raw_input()}
1
3
4
5
fox
>>> stu_dict
{'fox': [3.0, 4.0, 5.0]}

答案 1 :(得分:0)

以字符串形式输入您的输入split(" ")map()或循环播放。请查看以下示例。

在下面的示例中,您可以使用三个以上的数字,然后是" fox"或其他任何东西。

示例:

stra = "fox 3 4 5"
dicta  = {stra.split(" ")[0]:list(map(float, stra.split(" ")[1:]))}

print dicta # {'fox': [3.0, 4.0, 5.0]}

答案 2 :(得分:0)

您可以使用split()字符串方法将输入字符串:'3 4 5'拆分为字符串列表['3','4','5']。并使用float()函数将这些转换为整数值。 -

>>> stu_dict = {raw_input():[float(x) for x in raw_input().split()] for _ in raw_input()}
1
3 4 5
fox
>>> stu_dict
{'fox': [3.0, 4.0, 5.0]}

答案 3 :(得分:0)

你可以这样做:

l = input('Enter stuff: ').split()
stu_dict = {l[0]: [float(i) for i in l[1:]]}

{'fox': [3.0, 4.0, 5.0]}

请确保以字符串格式输入:

'fox 3 4 5'