``````oldList = [{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1972}, {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0}, {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1450}, {'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0}, {'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1334}]

newList = [{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 4756}, {'3-3': 406, '3-2': 0, '3-1': 0, '3-0': 0}]

``````

2个回答

``````import operator

oldList = [{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1972},
{'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1450},
{'3-3': 203, '3-2': 0, '3-1': 0, '3-0': 0},
{'0-0': 0, '0-1': 0, '0-2': 0, '0-3': 1334}]

newList = []

# 先把oldList第一个元素给newList,防止下面for循环中newList为空
newList.append(oldList[0])

# 每给newList添加一个元素时都和前面的比较，若keys()相同，则合并
for t in range(1,len(oldList)):
for li in newList:
if operator.eq(li.keys(), oldList[t].keys()):
for key in li.keys():
li[key] += oldList[t][key]
break
# 若keys()都不相同，则把新元素添加到newList
elif operator.eq(li,newList[-1]):
newList.append(oldList[t])
break

print(newList)

``````

``````def sum_dict(a,b):
temp = dict()
for key in a.keys()| b.keys():
temp[key] = sum([d.get(key, 0) for d in (a, b)])
return temp

def main():
from functools import reduce
return print(reduce(sum_dict,[a,b,c]))

a = {'f': 1, 't': 2, 'u': 3}
b = {'f':1,'g':3,'d':4}
c = {'g':3,'f':5,'e':10}
main()
``````

【python3.8字典问题请教】对Excel中数据提取，相同项对应值相加，写入新sheet表
![图片说明](https://img-ask.csdn.net/upload/201912/17/1576559364_374608.png) 我想提取Sheet表中的N、O和R列，对R列中相同姓名的人对应的N、O列的值分别相加，形成图2这样 ![图片说明](https://img-ask.csdn.net/upload/201912/17/1576559417_243731.png) ``` print('Opening workbook...') wb = openpyxl.load_workbook('C:/Users/mawenxin/Desktop/dome1/asd.xlsx') #打开Excel表格 sheet = wb.get_sheet_by_name('Sheet1') #获取工作表 nameData = { } #创建字典 print('Reading rows...') for row in range(2,sheet.max_row+1): #从第二行循环到最后一行 JE = sheet['N'+str(row)].value name = sheet['E'+ str(row)].value SY = sheet['O'+str(row)].value #存储每一列的数据 #字典结构nameData['姓名'][金额][使用金额] nameData={name,(JE,SY)} ``` 我按照网上以及书上的内容只能写这点，也不知道对不对 【问题】 **字典内能不能一个键对应两个值，或者对应一个元组或列表？** **用什么函数进行提取合并姓名？** **如果自定义函数要怎么写？** **能不能帮我写一下，琢磨很久了也不知道咋写**
python:求列表元素的积，以及求列表形式输出字典的键与值。

python闭包问题，关于字典的解包
``` import time def decorate(func): print("我是外层") def wrapper(*num,**kwargs): print("正在校验中......") print(num,kwargs) print(**kwargs) time.sleep(2) print("校验完毕") func(*num,**kwargs) return(wrapper) @decorate def f1(num): print("---f1---",num) f1(18) @decorate def f2(a,b): print("---f2---",a,b) @decorate def f3(a,b="333"): print("---f3---",a,b) list2=["111","222","abc123"] # f2(list2[0],list2[1]) f3(list2[2],b="4444") ``` 代码如上，就是一个简单的万能装饰器的应用，这里主要说下f3这个函数，我在调用这个函数的时候，实际上就是调用的wrapper，**kwargs就把b="4444"装包成了一个字典，然后执行func的时候又把这个字典解包，这里就有一个问题，既然可以解包，那我在wrapper函数中加了一个print(**kwargs)，就是想看下解包出来的东西输出是否是b="4444"这样的，但是加上这个以后就会报错，请问是为什么，我主要想看下，假如字典解包，他是一个什么样的格式传递的值的，谢谢
python怎么利用列表转字典之后进行排序？
python里面关于字典的问题

（自己搞定了）C++编写一个在单词本内单词测试的程序，求大佬捉虫
1.错误代码LINK2019,LINK1120 ``` #include "exam.h" #include "ui.h" #include <iostream> #include <string> #include "stdlib.h" #include "time.h" using namespace std; static const string exam_ui_prompt = "\n\n" "\t|*******************************|\n" "\t|* 请您选择考试类别 *|\n" "\t|* 1 看中文写英文 *|\n" "\t|* 2 看英文写中文 *|\n" "\t|* 3 看解释写成语 *|\n" "\t|* 0 返回上级 *|\n" "\t 请输入(1,2,3或0): "; void exam_ui() { void exam_ui_english_for_chinese(); { //装载词库 dict_load( &dictionaries[ENGLISH_CHINESE], DICT_PATH DICT_ENGLISH_CHINESE ); //生成考试题目 Examination exam; exam_create(&exam, &dictionaries[ENGLISH_CHINESE]); for (int i = 0; i < exam.words.size(); i++) { CLEAR(); cout << "\n\n"; cout << "\t|**************************|\n"; meaning_display(exam.meanings[i]); cout << "\n"; cout << "\t|*************************|\n"; string word = get_input_string("\t 请输入英文答案（0 退出） ： "); cout << "\t 请输入英文答案 （0 退出）："; std::getline(cin, word); if (word == exam.words[i]) { cout << "\t 正确！！！" << endl; string op = get_input_string("\t 请输入（0 退出， 其他 下一题）："); if (bool op = "0") { break; } } else if (word == "0") { break; } else { cout << "\t 错误， 继续加油哦" << endl; //继续下去还答这道题 i--; } } } CLEAR(); cout << exam_ui_prompt; string op; std::getline(cin, op); if (op == "1") { exam_ui_english_for_chinese(); } else if (op == "2") { } else if (op == "0") { return; } exam_ui(); } /** 生成一个[min,max)之间的随机整数 */ static int radom_index(int min, int max) { return (int)(min + (double)rand() / (double)RAND_MAX * (max - min)); } /* 从字典随机生成一个试卷 */ void exam_create(Examination* exam, Dictionary* dict) { srand(time(NULL)); int wordcount = dict->words.size(); int itemcount = wordcount < 10 ? wordcount : 10; for (int i = 0; i < itemcount; i++) { int idx = radom_index(0, wordcount); exam->words.push_back(dict->words[idx]); exam->meanings.push_back(dict->meanings[idx]); } } void exam_ui_display() { return; } void exam_ui_chinese_for_english() { return; } void exam_ui_english_for_chinese() { } ``` 3.我看我的头文件里都声明定义了但我还是不知道怎么解决这个错误 ``` #ifndef _EXAM_H #define _EXAM_H #include <string> #include <vector> #include "dict.h" using namespace std; typedef struct { vector<string>words; vector< vector < string > >meanings; }Examination; void exam_create(Examination* exam, Dictionary* dict); void exam_ui_display(); void exam_ui_chinese_for_english(); void exam_ui_english_for_chinese(); bool op; string word; #endif//!_EXAM_H ```
python 英文字典的联想查找

python字典的值为字母，怎样变成整数使其一一对应关系

Escape from Tetris 棋盘问题
Problem Description 由于整日整夜地对着这个棋盘，Lele终于走火入魔。每天一睡觉，他就会梦到自己会被人被扔进一个棋盘中，一直找不到出路，然后从梦中惊醒。久而久之，Lele被搞得精神衰弱。梦境是否会成为现实，谁也说不准，不过不怕一万只怕万一。现在Lele每次看到一个棋盘，都会想象一下自己被关进去以后要如何逃生。 Lele碰到的棋盘都是正方形的，其中有些格子是坏的，不可以走，剩下的都是可以走的。只要一走到棋盘的边沿（最外面的一圈），就算已经逃脱了。Lele梦见自己一定会被扔在一个可以走的格子里，但是不确定具体是哪一个，所以他要做好被扔在任意一个格子的准备。 现在Lele请你帮忙，对于任意一个棋盘，找出一个最短的序列，序列里可以包括"north"(地图里向上),"east"(地图里向右),"south"(地图里向下),"west"(地图里向左)，这四个方向命令。不论Lele被扔在棋盘里的哪个好的格子里，都能按这个序列行走逃出棋盘。 逃脱的具体方法是：不论Lele被扔在哪里，Lele按照序列里的方向命令一个一个地走，每个命令走一格，如果走的时候会碰到坏的格子，则忽略这条命令。当然，如果已经逃脱了，就可以不考虑序列中剩下的命令了。 Input 本题目包含多组测试，请处理至文件结束。 每组测试第一行包含一个正整数 N (0<N<9)，代表棋盘的大小是 N*N 接下来有N行，每行N个字符代表这个棋盘。 其中0代表该位置是好的，可以走，1代表该位置是坏的，不可以走。 题目数据保证，对于任意一个棋盘，都存在题目中所要求的序列 Output 对于每组数据，输出题目所要求的序列，序列中每个元素一行。 如果存在两个符合要求的序列，请输出字典序最小的那个序列。 两个测试之间请用一个空行隔开。 Sample Input 4 1101 0001 1100 1001 Sample Output east north

``` s=[{'a':'33', 'b':'ee', 'c':'55'}, {'a':'tt', 'b':'bb', 'c':'aa'}] list = [] a = list.append(x[0]['a'] for x in s) print (a) ``` 期望输出 33 tt

EXCEL 排序
Problem Description Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。 Input 测试输入包含若干测试用例。每个测试用例的第1行包含两个整数 N (<=100000) 和 C，其中 N 是纪录的条数，C 是指定排序的列号。以下有 N 行，每行包含一条学生纪录。每条学生纪录由学号（6位数字，同组测试中没有重复的学号）、姓名（不超过8位且不包含空格的字符串）、成绩（闭区间[0, 100]内的整数）组成，每个项目间用1个空格隔开。当读到 N=0 时，全部输入结束，相应的结果不要输出。 Output 对每个测试用例，首先输出1行“Case i:”，其中 i 是测试用例的编号（从1开始）。随后在 N 行中输出按要求排序后的结果，即：当 C=1 时，按学号递增排序；当 C=2时，按姓名的非递减字典序排序；当 C=3 时，按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时，则按他们的学号递增排序。 Sample Input 3 1 000007 James 85 000010 Amy 90 000001 Zoe 60 4 2 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 98 4 3 000007 James 85 000010 Amy 90 000001 Zoe 60 000002 James 90 0 0 Sample Output Case 1: 000001 Zoe 60 000007 James 85 000010 Amy 90 Case 2: 000010 Amy 90 000002 James 98 000007 James 85 000001 Zoe 60 Case 3: 000001 Zoe 60 000007 James 85 000002 James 90 000010 Amy 90
python字典排序：现有4门课的成绩字典如下所示。统计每个人的平均成绩，并根据平均成绩进行排序。要求按姓名检索平均成绩和排名

Java学习的正确打开方式

Python——画一棵漂亮的樱花树（不同种樱花+玫瑰+圣诞树喔）

HashMap 相关概念 HashTab、HashMap、TreeMap 均以键值对像是存储或操作数据元素。HashTab继承自Dictionary，HashMap、TreeMap继承自AbstractMap，三者均实现Map接口 **HashTab：**同步哈希表，不支持null键或值，因为同步导致性能影响，很少被使用 **HashMap：**应用较多的非同步哈希表，支持null键或值，是键值对...

linux系列之常用运维命令整理笔录

Python 基础（一）：入门必备知识

Python十大装B语法
Python 是一种代表简单思想的语言，其语法相对简单，很容易上手。不过，如果就此小视 Python 语法的精妙和深邃，那就大错特错了。本文精心筛选了最能展现 Python 语法之精妙的十个知识点，并附上详细的实例代码。如能在实战中融会贯通、灵活使用，必将使代码更为精炼、高效，同时也会极大提升代码B格，使之看上去更老练，读起来更优雅。 1. for - else 什么？不是 if 和 else 才

2019年11月中国大陆编程语言排行榜
2019年11月2日，我统计了某招聘网站，获得有效程序员招聘数据9万条。针对招聘信息，提取编程语言关键字，并统计如下： 编程语言比例 rank pl_ percentage 1 java 33.62% 2 c/c++ 16.42% 3 c_sharp 12.82% 4 javascript 12.31% 5 python 7.93% 6 go 7.25% 7

JDK12 Collectors.teeing 你真的需要了解一下

“狗屁不通文章生成器”登顶GitHub热榜，分分钟写出万字形式主义大作

《程序人生》系列-这个程序员只用了20行代码就拿了冠军

11月8日，由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办，科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。 　　区块链技术被认为是继蒸汽机、电力、互联网之后，下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力，电力解决了人类基本的生活需求，互联网彻底改变了信息传递的方式，区块链作为构造信任的技术有重要的价值。 　　1...