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

我有整数列表。在该列表中有两个字典,如下所示:


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']

但这似乎太复杂了


拉丁的传说
浏览 205回答 3
3回答

皈依舞

您可以使用以下代码,假设您拥有的唯一类型是 int 和 dict,并且 dict 将始终具有相同的格式:total_sum = 0dicts_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

Qyouu

您可以提取字典的索引,并在需要时使用函数来提取值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_listfor 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 directlyprint(sum(int_or_value(item) fro item in value_list[indices[0]:indices[1]+1]))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python