首页 > 解决方案 > 如何使用变量名将用户输入放入字典中?

问题描述

我必须将数据写入 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除了字典方法之外还有另一种更简单的方法可以将此信息添加到 /write 到 CSV 文件中,请务必提及。

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

标签: pythondataframedictionaryuser-input

解决方案


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)


推荐阅读