python 创建嵌套字典计数器问题

python creating nested dictionary counter issue

我正在研究单词出现与响应变量之间的相关性。为此,我正在尝试创建具有以下结构的字典:

{word_1:{response_value:word_1_occurrence_with_same_response_value},
 word_2:{response_value:word_2_occurrence_with_same_response_value}...}

一切看起来都正常,除了我的代码的最后一行。

下面是一些数据示例:

data = pd.DataFrame({
    'message': ['Weather update', 'the Hurricane is over',
                'Checking the weather', 'beautiful weather'],
    'label': [0, 1, 0, 1]
})

和我的代码:

word_count = {}

for idx,msg in enumerate(data['message']):
    msg = msg.lower()
    label = data['label'][idx]
    for word in msg.split():
        word_count[word]={}
        word_count[word][label]=word_count.get(word,0)+1

我收到以下错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-72-b195c90ef226> in <module>
      6     for word in msg.split():
      7         word_count[word]={}
----> 8         word_count[word][label]=word_count.get(word,0)+1

TypeError: unsupported operand type(s) for +: 'dict' and 'int' 

我试图获得的输出如下

{'weather': {0: 2}, 'update': {0: 1},'the': {1: 1},'hurricane': {1: 1},
 'is':{1:1},'over':{1:1}, 'checking':{0:1},'the':{0:1},'weather':{1:1},
 'beautiful':{1:1}}

我尝试了各种解决方案,但我无法让计数器工作,只能为键赋值。
我也只在这里找到 posts 关于从一个已经存在的嵌套字典中计数,而这里是相反的,但是,如果我错过了它,请指导我到适当的 post。

谢谢

无法在 python 中获得您想要的输出,因为字典中的同一个键不能有两个不同的值。键必须是唯一的。这是我想出的:

data = pd.DataFrame({
    'message': ['Weather update', 'the Hurricane is over',
                'Checking the weather', 'beautiful weather'],
    'label': [0, 1, 0, 1]
})

word_count = {}

for idx,msg in enumerate(data['message']):
    msg = msg.lower()
    label = data['label'][idx]
    for word in msg.split():
        word_count[word][label] = word_count.setdefault(word, {}).setdefault(label, 0)+1

print(word_count)

输出:

{'weather': {0: 2, 1: 1}, 'update': {0: 1}, 'the': {1: 1, 0: 1}, 'hurricane': {1: 1}, 'is': {1: 1}, 'over': {1: 1}, 'checking': {0: 1}, 'beautiful': {1: 1}}