无法将已排序的字符串获取到字典中以创建饼图
问题描述:
我在编码出正确的代码以便将字符串拆分为字典时遇到了问题。我曾尝试以下方法:无法将已排序的字符串获取到字典中以创建饼图
maindict = dict(item.split(":") for item in mainmain.split(","))
print maindict
不过,我已经得到了下面的错误,说明
"ValueError: dictionary update sequence element #1 has length 1; 2 is required".
下面是我的代码片段。
首先,用户将通过文件浏览器输入他们的文件,这个函数将被调用并且文件将被读取。从CSV中,单词的频率将被计数并放入要显示的字符串中。
def category(x):
readCSV = csv.DictReader(open(filename, 'rb'))
dict_list = []
for read in readCSV:
dict_list.append(read)
for item in dict_list:
rowRequest = item["Order Group"].title()
string = rowRequest.replace('-', ' ').strip()
if str(string):
count = frequencyReq.get(string, 0)
frequencyReq[string] = count + 1
freqSort = sorted(frequencyReq.iteritems())
Maintainence = ""
num_maintainence = 0
for item, freqCom in freqSort:
main = ['Acmv', 'Air', 'Audio', 'Elec', 'Lift', 'Light']
if any(word in item for word in main):
num_maintainence += freqCom
Maintainence += "%s:%d, " % (item, freqCom)
Mainit = "%s" % num_maintainence
mainmain = "%s" % Maintainence
maindict = dict(item.split(":") for item in mainmain.split(", "))
print maindict
从mainmain,我得到了我想要的字符串印刷时,这是
Acmv:2, Air Conditioning:50, Audio Video Equipment:1, Electrical:22, Lift:60, Lighting:118,
。
现在,我需要将此字符串分隔成一个字典,以便我可以从字典中获取变量和值以创建饼图。
答
我认为问题是mainmain
字符串中的最后一个逗号。尝试剥离这样的:
maindict = dict(item.split(':') for item in mainmain.strip(',').split(','))
您已经有了键/值对的列表的形式,本来可以直接变成了字典数据 - 为什么在世界上,你会加入这一切成字符串,然后将其分割回各个项目中?无论如何,问题在于字符串尾部的',' - 分割它会在末尾产生一个空白项,在':'上分割空白只会产生一个元素,而不是dict构造函数所需的两个元素。 – jasonharper