gpt4 book ai didi

python - 访问嵌套字典列表中的值

转载 作者:行者123 更新时间:2023-11-28 20:50:44 27 4
gpt4 key购买 nike

我的字典是这样的:

docScores = {0:[{u'word':2.3},{u'the':8.7},{u'if':4.1},{u'Car':1.7}],
1:[{u'friend':1.2},{u'a':5.2},{u'you':3.8},{u'person':0.8}],
...
29:[{u'yard':1.5},{u'gardening':2.8},{u'paint':3.7},{u'brush':1.6}]
}

我想对每个列表的每个内部字典的值求和并将其存储在一个新字典中,新字典的键值为 {0:2.3+8.7+4.1+1.7, 1:1.2+ 5.2+3.8+0.8, ...等

for x in docScores[0]: #{0:
for x in docScores[0][0].values(): #{,2.3}.
sum = sum+x #where sum = 0 before loop
docSum[0] = sum
repeat this loop for every document

我尝试过的任何变体都会给我意想不到的输出。谁能给我正确的语法?

最佳答案

这个字典理解有效:

docScores = {0:[{u'word':2.3},{u'the':8.7},{u'if':4.1},{u'Car':1.7}],
1:[{u'friend':1.2},{u'a':5.2},{u'you':3.8},{u'person':0.8}],
29:[{u'yard':1.5},{u'gardening':2.8},{u'paint':3.7},{u'brush':1.6}]
}

sum_d={k:sum(d.values()[0] for d in v) for k,v in docScores.items()}

print sum_d

打印:

{0: 16.8, 1: 11.0, 29: 9.6}

但是,更改数据结构可能更容易。你可以有一个 dict of dicts:

>>> NdocScores = {0:{u'word':2.3,u'the':8.7,u'if':4.1,u'Car':1.7},
... 1:{u'friend':1.2,u'a':5.2,u'you':3.8,u'person':0.8},
... 29:{u'yard':1.5,u'gardening':2.8,u'paint':3.7,u'brush':1.6}
... }

允许直接访问每个文档数据:

>>> NdocScores[0]
{u'Car': 1.7, u'the': 8.7, u'word': 2.3, u'if': 4.1}
>>> NdocScores[0][u'Car']
1.7
>>> sum(NdocScores[1].values())
11.0

>>> NdocScores[29]
{u'gardening': 2.8, u'yard': 1.5, u'brush': 1.6, u'paint': 3.7}

或者,只是有一个字典列表,列表中的位置对应于文档索引:

>>> lofdicts=[v for k,v in NdocScores.items()]
>>> lofdicts
[{u'Car': 1.7, u'the': 8.7, u'word': 2.3, u'if': 4.1}, {u'a': 5.2, u'person': 0.8, u'you': 3.8, u'friend': 1.2}, {u'gardening': 2.8, u'yard': 1.5, u'brush': 1.6, u'paint': 3.7}]
>>> lofdicts[0]
{u'Car': 1.7, u'the': 8.7, u'word': 2.3, u'if': 4.1}
>>> sum(lofdicts[1].values())
11.0

关于python - 访问嵌套字典列表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11797383/

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