gpt4 book ai didi

python - Python循环中的字典字典

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:28 27 4
gpt4 key购买 nike

我正在尝试构建字典,其中每个键都有一个字典本身的值。以下代码的问题是,当新的 if 完成时,它不会将新项目追加到字典中

dict_features = {}
def regexp_features(fileids):
for fileid in fileids:
if re.search(r'мерзавец|подлец', agit_corpus.raw(fileid)):
dict_features[fileid] = {'oskorblenie':'1'}
else:
dict_features[fileid] = {'oskorblenie':'0'}

if re.search(r'честны*|труд*', agit_corpus.raw(fileid)):
dict_features[fileid] = {'samoprezentacia':'1'}
else:
dict_features[fileid] = {'samoprezentacia':'0'}
return dict_features

结果是字典

{'neagitacia/20124211.txt': {'samoprezentacia': '0'}, 'agitacia/discreditacia1.txt': {'samoprezentacia': '0'}

但我需要

{'neagitacia/20124211.txt': {'oskorblenie':'1', 'samoprezentacia': '0'}, 'agitacia/discreditacia1.txt': {'oskorblenie':'0', 'samoprezentacia': '0'}

最佳答案

您正在重写同一fileid的值。

在您的代码中,

if re.search(r'мерзавец|подлец', agit_corpus.raw(fileid)):
dict_features[fileid] = {'oskorblenie':'1'}
else:
dict_features[fileid] = {'oskorblenie':'0'}

if re.search(r'честны*|труд*', agit_corpus.raw(fileid)):
dict_features[fileid] = {'samoprezentacia':'1'}
else:
dict_features[fileid] = {'samoprezentacia':'0'}

对于一个fileid,您创建第一个,然后使用第二个if-else 结构替换它。 (if-else 都构造了 put 值,因为 ifelse 将始终被执行)

您可能正在寻找一个以 dict 作为默认值的 defaultdict 。类似的东西 -

>>> from collections import defaultdict
>>> a = defaultdict(dict)
>>> a['abc']
{}
>>> a['abc']['def'] = 1
>>> a
defaultdict(<type 'dict'>, {'abc': {'def': 1}})
>>> a['abc']['fgh'] = 2
>>> a
defaultdict(<type 'dict'>, {'abc': {'fgh': 2, 'def': 1}})

因此,您的代码可能会更改为

dict_features = defaultdict(dict)
def regexp_features(fileids):
for fileid in fileids:
if re.search(r'мерзавец|подлец', agit_corpus.raw(fileid)):
dict_features[fileid]['oskorblenie'] = '1'
else:
dict_features[fileid]['oskorblenie'] = '0'

if re.search(r'честны*|труд*', agit_corpus.raw(fileid)):
dict_features[fileid]['samoprezentacia'] = '1'
else:
dict_features[fileid]['samoprezentacia'] = '0'
return dict_features

关于python - Python循环中的字典字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18023553/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com