为了账号安全,请及时绑定邮箱和手机立即绑定

在两个字典之间的python列表中添加值

在两个字典之间的python列表中添加值

拉丁的传说 2021-08-17 10:32:18
我有整数列表。在该列表中有两个字典,如下所示:value_list = [1180, 1190, 1190, {'low': 1180}, 1130, 1130, 1180, {'low':1160}, 1130]我试图得到的输出是两个字典之间的值的总和,以及字典的值。例如:for item in value_list:     # if item in list is a dict, sum its value     # with value of next dict and values in between在这种情况下,输出将是 5780我想到的一种方法是找到两个字典的索引号并像这样使用它们:value_list[3]['low'] + sum(value_list[4:7]) + value_list[7]['low']但这似乎太复杂了
查看完整描述

3 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您可以使用以下代码,假设您拥有的唯一类型是 int 和 dict,并且 dict 将始终具有相同的格式:


total_sum = 0

dicts_num = 0 #flag for checking how many dicts have appeared  

for value in value_list:

    if isinstance(value, dict):

        dicts_num += 1

        total_sum += value["low"]

    elif (dicts_num == 1):

        total_sum += value


查看完整回答
反对 回复 2021-08-17
?
Qyouu

TA贡献1786条经验 获得超11个赞

您可以提取字典的索引,并在需要时使用函数来提取值


def int_or_value(item, key='low'):

    if isinstance(item, int):

        return item

    else:

        return item[key]


value_list = [1180, 1190, 1190, {'low': 1180}, 1130, 1130, 1180, {'low':1160}, 1130]

indices = [index for index, value in enumerate(value_list) if isinstance(value, dict)]


# Use this if you have multiple instances of {dict} ... {dict} to sum in you value_list

for start, stop in (indices[n:n+2] for n in range(0, len(indices), 2)):

    print(sum(int_or_value(item) for item in value_list[start:stop+1]))


# If you are sure there is going to be a single instance of {dict} ... {dict} to sum just access indices directly

print(sum(int_or_value(item) fro item in value_list[indices[0]:indices[1]+1]))


查看完整回答
反对 回复 2021-08-17
  • 3 回答
  • 0 关注
  • 204 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信