map() 函数获取输入

新手上路,请多包涵

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

 >>> id 1230

我希望它以以下形式保存:

 {"id":1230}

或者

[(id,1230)]

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

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

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

原文由 FrastoFresto 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 585
2 个回答

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

id 1230
hi 16
id 99

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

其他人已经建议了如何解析这些值,但为了完成,我也会将其添加到我的答案中。

字典方法

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)))

原文由 Thijs van Ede 发布,翻译遵循 CC BY-SA 4.0 许可协议

你不需要 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.')

原文由 jpp 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题