Python将嵌套列表转换为字典?

2024-05-16 13:21:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是一个嵌套列表,其中包含各种类型的犯罪。为了澄清,crimeDescription的格式如下: [['Murder'], ['Assault'], ... , ['Stalking'], ['Rape']]。我正在寻找创建一个字典,将保存在此列表中的每个值/犯罪,并记录其频率,或它在数据集中出现的频率。由于字典中的键不能是列表,所以我试图通过在for循环中调用其索引I[0]来访问每个嵌套列表中的字符串。当我运行以下程序时:

#TypesOfCrime --> a List containing all different types of crime that's happened in LA

TypesOfCrime = []
CrimeFreq = {}
for i in crimeDescription: 
    if i not in TypesOfCrime:
        i = i[0]
        CrimeFreq[i] = 1
    elif i in TypesOfCrime:
        i = i[0]
        CrimeFreq[i] += 1

我得到以下错误:

^{pr2}$

我做错什么了?如何创建包含嵌套列表中每个不同值的字典?任何建议都会有帮助。在


Tags: 数据in列表for字典格式记录频率
2条回答

是否希望键不存在、创建值或如果键存在,请添加值。

我建议使用setdefault()方法。

crime_freq = {}

for current_crime in crimeDescription:
    crime = current_crime[0]
    crime_freq.setdefault(crime, 0)
    crime_freq[crime] += 1

如果使用setdefault()方法,代码很简单。

我通常经常使用setdefault()方法。

要用dict计算某个值,请检查该键是否已存在,然后递增该值,否则将该键与值1相加:

crime_freq = {}

for current_crime in crimeDescription:
    crime = current_crime[0]
    if crime in crime_freq:
        crime_freq[crime] += 1
    else:
        crime_freq[crime] = 1

解决问题的现代方法是使用^{}和生成器表达式:

^{pr2}$

相关问题 更多 >