我有字典格式的表格。我想在最后添加总行。我们可以遍历每个项目并找到总和。有没有优化的解决方案?
示例:
items = {"red":[2,5,7], "yellow":[4,6,7]}
输出
{"red":[2,5,7], "yellow":[4,6,7], "Total":[6,11,14]}
答案 0 :(得分:4)
这会将所需的项目添加到items
:
items['Total'] = map( sum, zip(*items.values()) )
items.values()
为您提供数字列表。对于示例数据,这将是[[2,5,7],[4,6,7]]
zip(*items.values())
支持该列表列表,为您提供一个列表,将相同索引的值组合在一起。例如,这将是[[2,4],[5,6],[7,7]]
map
sum
这些列表中的items
函数,为您提供所需金额的总和序列。#include <stdlib.h>
typedef struct node{
int key;
struct node* next;
} node_t;
typedef node_t* node_ptr;
int main()
{
node_ptr list_head = NULL;
node_ptr p;
node_ptr temp;
int i;
/* create a list with keys = 1,2,3..10 */
for (i = 1; i <= 10; i++)
{
p = (node_ptr)malloc(sizeof(node_t));
p->key = i;
p->next = NULL;
if( list_head == NULL )
{
list_head= p;
}
else
{
for(temp = list_head; temp->next != NULL; temp = temp->next);
temp->next = p;
}
}
return 0;
}
元素。答案 1 :(得分:0)
你可以将这样的值相加:
items = {"red":[2,5,7], "yellow":[4,6,7]}
items["total"] = [sum(i) for i in zip(*items.values())]
结果你会得到:
>items
=> {'red': [2, 5, 7], 'yellow': [4, 6, 7], 'total': [6, 11, 14]}
`