03.使用字典數(shù)據(jù)創(chuàng)建圖表出現(xiàn) AttributeError

我在使用字典數(shù)據(jù)創(chuàng)建圖表的時(shí)候,出現(xiàn)了AttributeError的現(xiàn)象:
當(dāng)時(shí)的代碼如下:

--snip--
names, plot_dicts = [], []
for repo_dict in repo_dicts:
    names.append(repo_dict['name'])
    plot_dict = {
        'value': repo_dict['stargazers_count'], 
        'label': repo_dict['description']
        }
    plot_dicts.append(plot_dict)
--snip--
chart.add('', plot_dicts)
chart.render_to_file('python_repos_plot_dicts.svg')

執(zhí)行后,并沒有正常生成圖表,而是出現(xiàn)了如下報(bào)錯(cuò)

AttributeError: 'NoneType' object has no attribute 'decode'

具體是什么原因呢?
為了排查原因,可以首先使用print語(yǔ)句,看字典和列表的創(chuàng)建是否出現(xiàn)了問題:

--snip--
print(plot_dicts)
print(len(plot_dicts))
print(names)
print(len(names))
--snip--

然后在print()的結(jié)果中,就可以發(fā)現(xiàn)問題的所在了,在創(chuàng)建的plot_dicts中,出現(xiàn)了這樣的一項(xiàng):

 {'value': 17925, 'label': None}

這項(xiàng)數(shù)據(jù)的 labelNone ,而 chart.render_to_file() 并不能處理 None ,于是便出現(xiàn)了 'NoneType' object has no attribute 'decode' 的提示,也就是 AttributeError
那要如何解決這一報(bào)錯(cuò)呢?
可以用 try-except 的方法處理這一錯(cuò)誤,但是這樣的處理方法對(duì)于圖表的制作并不適合,而且,對(duì)于圖表這種展示型更強(qiáng)的表現(xiàn)形式而言,并沒有「醒目地提醒觀看者這里有問題需要更改」這樣的必要,因此,使用 if-else 處理就可以了,我是這樣做的:

names, plot_dicts = [], []
for repo_dict in repo_dicts:
    names.append(repo_dict['name'])

    if repo_dict['description'] == None:
        plot_dict = {
            'value': repo_dict['stargazers_count'], 
            'label': 'No information.'  //←這里直接把 'label' 替換為提示信息。
            }
    else:
        plot_dict = {
            'value': repo_dict['stargazers_count'], 
            'label': repo_dict['description']
            }

    plot_dicts.append(plot_dict)

這樣就可以成功繪制出圖表了。

提示 'No information'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 4,194評(píng)論 1 10
  • 1.1==,is的使用 ·is是比較兩個(gè)引用是否指向了同一個(gè)對(duì)象(引用比較)。 ·==是比較兩個(gè)對(duì)象是否相等。 1...
    TENG書閱讀 790評(píng)論 0 0
  • 今天早上申請(qǐng)了個(gè)阿里云ECS服務(wù)器,選擇了centOS 7系統(tǒng),悲催的是,發(fā)現(xiàn)自帶版本為python2.7,我的博...
    thinkact閱讀 4,450評(píng)論 3 6
  • 一直期盼的只是遇見 遇見那個(gè)人 在下一次旅程,下一次起點(diǎn) 在下一個(gè)路口,下一個(gè)車站 回首間 遇見 猶如云開霧散,彩...
    川上風(fēng)云閱讀 279評(píng)論 0 0
  • 一、iOS9 網(wǎng)絡(luò)編程的重大改變: 1、網(wǎng)絡(luò)請(qǐng)求方式的改變 2、后臺(tái)服務(wù)器傳輸協(xié)議由HTTP改成HTTPS(使用網(wǎng)...
    IIronMan閱讀 381評(píng)論 0 3

友情鏈接更多精彩內(nèi)容