gpt4 book ai didi

python - 检查字典数组中的键值对并相应更新另一个列表

转载 作者:行者123 更新时间:2023-12-01 08:16:07 25 4
gpt4 key购买 nike

我有多个包含字典的数组。我想检查这些数组并根据迭代数组中的字典时遇到的键值对更新另一个列表。

因此对于以下 4 个情感数组:

senti_array1 = [{'senti':'Positive', 'count':15}, {'senti':'Negative', 'count':10}, {'senti':'Neutral', 'count':5}]
senti_array2 = [{'senti':'Positive', 'count':8}, {'senti':'Negative', 'count':4}]
senti_array3 = [{'senti':'Positive', 'count':2}]
senti_array4 = [{'senti':'Negative', 'count':7}, {'senti':'Neutral', 'count':12}]

pos_list=[]
neg_list=[]
neu_list=[]

如果存在负面情绪,则在这种情况下应使用其计数值更新相应的列表 (neg_list),否则如果不存在“负面”情绪,则应在列表中附加 0在数组中。

最终输出应该是:

pos_list=[15, 8, 2, 0]
neg_list=[10, 4, 0, 7]
neu_list=[5, 0, 0, 12]

我尝试使用普通的 for 循环,但没有得到所需的输出,因为每次检查 if else 条件时,如果情绪不存在,则会在列表中附加 0,这会产生错误的输出。我认为映射或 lambda 函数可以用于此目的,但不知道如何开始。

最佳答案

您可以创建一个字典,将情绪映射到数组索引到计数的字典映射,以便您可以迭代 3 个情绪,并通过数组数量范围迭代索引来构建计数列表。使用 dict.get 方法将默认计数设置为 0:

mapping = {}
for i, l in enumerate((senti_array1, senti_array2, senti_array3, senti_array4)):
for d in l:
mapping.setdefault(d['senti'], {})[i] = d['count']
pos_list, neg_list, neu_list = ([mapping.get(s, {}).get(k, 0) for k in range(i + 1)] for s in ('Positive', 'Negative', 'Neutral'))

根据您的示例输入,pos_list 变为:

[15, 8, 2, 0]

neg_list 变为:

[10, 4, 0, 7]

neu_list变成:

[5, 0, 0, 12]

关于python - 检查字典数组中的键值对并相应更新另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54969923/

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