无法将已排序的字符串获取到字典中以创建饼图

问题描述:

我在编码出正确的代码以便将字符串拆分为字典时遇到了问题。我曾尝试以下方法:无法将已排序的字符串获取到字典中以创建饼图

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, 

现在,我需要将此字符串分隔成一个字典,以便我可以从字典中获取变量和值以创建饼图。

+3

您已经有了键/值对的列表的形式,本来可以直接变成了字典数据 - 为什么在世界上,你会加入这一切成字符串,然后将其分割回各个项目中?无论如何,问题在于字符串尾部的',' - 分割它会在末尾产生一个空白项,在':'上分割空白只会产生一个元素,而不是dict构造函数所需的两个元素。 – jasonharper

我认为问题是mainmain字符串中的最后一个逗号。尝试剥离这样的:

maindict = dict(item.split(':') for item in mainmain.strip(',').split(','))