Python TypeError:无法将字典更新序列元素#1转换为序列

时间:2014-12-19 20:48:13

标签: python-2.7

通过O' Reilly" Python for Data Analysis中的示例进行一些数据争论。"

我们从以下格式的数据开始:

In [108]: data.CATEGORY[:5]
Out[108]: 
0          1. Urgences | Emergency, 3. Public Health, 
4                            1. Urgences | Emergency, 
5                       5e. Communication lines down, 
6    4. Menaces | Security Threats, 4e. Assainissem...
7                      4. Menaces | Security Threats, 
Name: CATEGORY, dtype: object

然后,本书列出了删除期间的程序,并且' |'从每个条目开始,目标是使用以下定义创建字典;

def get_all_categories(cat_series):
    cat_sets = (set(to_cat_list(x)) for x in cat_series)
    return sorted(set.union(*cat_sets))

def get_english(cat):
    code, names = cat.split('.')
    if '|' in names:
        names = names.split(' | ')[1]
    return code, names.strip()

第一步没问题,创建了唯一类别列表;

In [109]: all_cats = get_all_categories(data.CATEGORY)

In [110]: all_cats[:5]
Out[110]: 
['1. Urgences | Emergency',
 '1a. Highly vulnerable',
 '1b. Urgence medicale | Medical Emergency',
 '1c. Personnes prises au piege | People trapped',
 '1d. Incendie | Fire']

但是,使用第二个定义会产生以下结果;

In [116]: english_mapping = dict(get_english(x) for x in all_cats)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-116-e69c3419c341> in <module>()
----> 1 english_mapping = dict(get_english(x) for x in all_cats)

TypeError: cannot convert dictionary update sequence element #1 to a sequence

请给Python noob一点帮助:)

2 个答案:

答案 0 :(得分:2)

以下是解决方案:

  1. &#34;无法将字典更新序列元素#1转换为序列&#34; ---因为表达式中有空值&#34; get_english(x)for all in all_cats&#34; ,因此无法将其转换为字典;

  2. 为什么呢?

  3. def get_english(cat):
        code,names=cat.split('.')
        if '|' in names:
            names=names.split('|')[1]
            return code,names.strip()
    

    ----这是问题,最后一行不应该缩进,否则,你会得到一些值null。

答案 1 :(得分:0)

感谢帮助人员,看来我只是一个白痴。尝试所有相同的代码,无论出于何种原因,今天它的工作原理。如果有人知道我可能做错了什么来抛出这个特定的TypeError,我会很感激。