【问题标题】:How do I put user input into a dictionary using variable names?如何使用变量名将用户输入放入字典中?
【发布时间】:2021-04-10 15:19:45
【问题描述】:

我必须将数据写入 CSV 文件。 在我的代码的一部分中,我想将用户输入添加到字典中,然后将其转换为 DataFrame

所以我首先通过将输入分配给变量名来获取输入,例如

fruit = input('Which fruit would you like').casefold()
vegetable = input('Which vegetable would you like').casefold()
drink = input('Which drink would you like').casefold()

然后它会继续收集输入,直到用户要求它停止。 但是现在我需要先显示这个收集的数据的某一行,然后对该数据进行排序,然后显示排序后的版本。所以我决定一个简单的方法是把它放进字典,然后把它分类成DataFrame。 我不确定如何使用这些变量名,例如。如果我想做一个:

data = {
    'Fruits': fruits,
    'Vegetables': vegetables, 
    'Drinks' : drinks 
}

我该怎么做? 如果您认为除了字典方法之外还有另一种更简单的方法可以将此信息添加到 DataFrame/将其写入 CSV 文件,请同时提及。

对 Python 和 SOF 非常陌生,如果问题不清楚/愚蠢,请原谅我。 另外,请使用简单的功能/方法。谢谢!

【问题讨论】:

  • 您发布的代码没有任何问题 - 字典的创建形式可以工作。

标签: python dataframe dictionary user-input


【解决方案1】:

globals() 是一种将全局命名空间中所有当前变量的值存储在字典中的方法(locals() 对本地命名空间的作用相同)。因此,您可以将带有变量名称的字符串传递给它,并返回当前值。像这样的东西: print(globals()['fruit']) 'fruit' 是全局字典中的键。 所以你也许可以做这样的事情:

dict1 = {'水果':[],'蔬菜':[],'饮料':[]}

当真时:

q = input('q to exit return to continue: ')
if q == 'q':
    break
else:        
    fruit = input('Which fruit would you like')
    vegetable = input('Which vegetable would you like')
    drink = input('Which drink would you like')      
for k in dict1.keys():
    dict1[k].append(globals()[k])

打印(dict1)

【讨论】:

  • 使用 globals() 很少是一个好主意 - 如果代码 sn-p 在函数中,则不会工作。在这里使用循环没有用 - 您的代码已经知道变量名称是什么。
【解决方案2】:

一种方法是这样的:

d = {}
d['Fruit'] = input('Which fruit would you like').casefold()
d['Vegetable'] = input('Which vegetable would you like').casefold()
d['Drink'] = input('Which drink would you like').casefold()

在此处使用变量没有任何好处 - 只需将输入直接用于字典即可。

【讨论】:

    猜你喜欢
    • 2019-12-02
    • 1970-01-01
    • 2013-08-02
    • 2021-12-27
    • 2017-02-04
    • 2023-04-08
    • 1970-01-01
    • 2015-09-17
    • 2021-06-29
    相关资源
    最近更新 更多