我已将我的dic定义如下:
grocery_dict={"apple":"fruite", "pepper": "veg", "spaghetthi":"pasta", "banana":"fruite", "tomato":"fruite"}
我的列表是grocery_list=["apple","bananas","pizza","pepper"]
我编写了一个代码,允许我比较项目并提供项目的类别。
gl=[]
for item in grocery_list:
if item in grocery_dict:
x=grocery_dict[item]
gl.append(x)
else:
x='other'
gl.append(x)
print(gl)
接下来,我可以计算每个类别的次数。 现在我的问题是如何将它与词典中存在的单词的一部分进行比较,例如,如果我有“Mexican Pepper”或“tomatto”等项目,以及如何不考虑字符串中的大写字母。
另一个问题:在这种情况下是否可以使用pyspark?
提前谢谢
答案 0 :(得分:0)
这实际上很少与dicts有关,主要与字符串操作和自然语言处理有关。
wrt /大写和大写/小写,解决方案很简单:只使用所有较低的字符串作为dict中的键,并将.lower()
方法应用于列表中的所有字符串,即:
grocery_list = ["apple","bananas","pizza","pepper"]
normalized_list = [word.lower() for word in grocery_list]
处理像“墨西哥胡椒”这样的术语会更难。您当然可以拆分字符串并查找每个部分,但如果您的列表中有“Apple Tomato”之类的内容,则无法判断您是否需要“apple”或“tomato”。处理拼写错误需要像拼写检查程序一样,但在这里你再也无法确定你会得到一个无法保证的明确答案。
作为旁注:您当前的代码可以大大简化:
gl = [grocery_dict.get(name, "other") for name in grocery_list]