以特定格式获取用户输入(Python 3.5)

时间:2017-05-18 03:05:10

标签: python csv dictionary

我使用.CSV文件来创建我的代码,但现在我想替换.CSV文件并要求用户输入。我的.CSV文件有两列:1)make和2)已售出,其中make是不同的车辆制造和销售有2014年销售的车辆的数量。此.CSV文件已被转换为字典。

我的问题是,如何向用户询问数据,以便我可以制作类似的字典(制作和销售)?我尝试询问一系列if和else语句,询问此输入,但必须有一种更优雅的方式来管理大量数据。

阅读我的文件给出(仅使用三个品牌作为例子):

{'Jeep': 1017019, 'Ford': 2480942, 'BMW': 1811719}

我想创建一个类似的字典,但只是要求用户输入。

2 个答案:

答案 0 :(得分:1)

基本上,你需要一个循环。由于您无法提前知道使用while循环进行多少次迭代。使用try-except验证输入,并使用sentinel值让用户摆脱循环。

In [51]: data = {}
    ...: while True:
    ...:     inpt = input("Enter data seperated by a space, or 'done' when finished\n")
    ...:     try:
    ...:         k, v = inpt.split()
    ...:     except ValueError:
    ...:         if inpt.strip() == 'done':
    ...:             break
    ...:         print("Invalid input, please try again")
    ...:     else:
    ...:         data[k] = v
    ...:
Enter data seperated by a space, or 'done' when finished
Jeep 10170
Enter data seperated by a space, or 'done' when finished
Ford 12321
Enter data seperated by a space, or 'done' when finished
BMW10202
Invalid input, please try again
Enter data seperated by a space, or 'done' when finished
BMW 1020
Enter data seperated by a space, or 'done' when finished
done

In [52]: data
Out[52]: {'BMW': '1020', 'Ford': '12321', 'Jeep': '10170'}

答案 1 :(得分:1)

您可以尝试使用split()获取键值并生成字典:

d={}
while True:
    _input_ = raw_input()
    if _input_:
        try:
            d[_input_.split()[0]]=int(_input_.split()[1])
        except Exception as e:
            print e
    else:
        break
print d
Jeep 1
BMW 2
Ford 3

{'Jeep': 1, 'BMW': 2, 'Ford': 3}