map()函数获取输入

时间:2018-09-28 13:04:02

标签: python python-3.x function dictionary input

我正在尝试从用户那里获得特殊输入,然后将其保存在字典中。我想到的输入是这样的:

>>> id 1230

,我希望将其保存为:

{"id":1230}

[(id,1230)]

我的问题是实际上有两个变量,一个是字符串,另一个是整数,所以我不知何故从用户那里得到了一行,然后将第一和第二部分分开并保存在其中一个我提到的表格。我知道它与map()函数有关,也许还使用了lambda表达式。一旦我使用了这样的代码,就得到了两个整数:

x,y = map(int,input().split())

但是我真的不知道如何使用字符串和整数。 非常感谢

7 个答案:

答案 0 :(得分:5)

您在这里不需要map。您可以使用str.split按空格分割,然后显式创建字典:

var = input('Enter input: ')  # 'id 1230'
key, value = var.split()
d = {key: int(value)}         # {'id': 1230}

您可以添加一些检查以确保在输入格式之前正确输入格式:

while True:
    try:
        var = input('Enter input: ')  # 'id 1230'
        key, value = var.split()
        d = {key: int(value)}         # {'id': 1230}
        break
    except ValueError:
        print('Incorrect format supplied, type "id 1230" expected. Please try again.')

答案 1 :(得分:5)

关于您要将数据存储为dict还是tuples列表的问题取决于您是否希望用户覆盖现有值。如果将值存储在dict中,则输入

id 1230
hi 16
id 99

将产生像{"id": 99, "hi":16}这样的字典,因为第二个输入id会覆盖第一个输入。元组方法列表将产生[("id", 1230), ("hi", 16), ("id", 90)]

其他人已经提出了如何解析值的方法,但是为了完整起见,我还将其添加到答案中。

Dict方法

d = dict()
var = input('Enter input: ')
key, value = var.split()
d[key] = int(value)

列表方法

L = list()
var = input('Enter input: ')
key, value = var.split()
L.append((key, int(value)))

答案 2 :(得分:3)

您需要拆分输入并将其保存到字典中。

data = dict()
keyValue = input()
data[keyValue.split(' ')[0]) = keyValue.split(' ')[1]

答案 3 :(得分:3)

usr_inpt = input("enter whatever you want to enter: ")
id, value = usr_inpt.split()
output = [(id,value)]

这会将您的输入格式化为tuple ...但是我不建议您使用dictionary,因为每个键都必须是唯一的,并且如果您有来自用户的多次输入,则可能最终会覆盖之前的内容输入的用户输入。

答案 4 :(得分:3)

d={}
user_input=input('input id and number separated by space')# 'id 1'
key_value_split=user_input.split(' ')
d[key_value_split[0]]=key_value_split[1] # for dict
print(d) # {'id': '1'}

对于元组

print(d.items()) # [('id', '1')]

答案 5 :(得分:3)

>>> i = "id"
>>> x = 1234
>>> out = {i:x}
>>> out
{'id': 1234}
>>> out = [(i,x)]
>>> out
[('id', 1234)]
>>> 
>>>
>>> 
>>> ix = input("--> ")

--> id 1234
>>> ix = ix.split()
>>> out = {ix[0]:int(ix[1])}    
>>> out
{'id': 1234}
>>> out = [(ix[0],int(ix[1]))]    
>>> out
[('id', 1234)]
>>> 

或者某个功能可以工作:

>>> add = lambda x:{x.split()[0],int(x.split()[1])}
>>> out = add(input("--> "))
--> id 1234
>>> out
{1234, 'id'}
>>> 

答案 6 :(得分:1)

# Intiatlise value and id
id=0
value=''
id,value=input().split()
id=int(id)