我有两份字典,解释了某人及其角色,例如,在L1下面显示了D指示的驾驶员角色,L2显示了P的包装工:
L1 = [
{'D': 'Jim Jones'},
{'D': 'Tom Jones'},
{'D': 'Bob Jones'}
]
L2 = [
{'P': 'Jim Jones'},
{'P': 'Bob Jones'}
]
我想合并字典列表,以便密钥是其角色的合并密钥,例如:
L3 = [
{'DP': 'Jim Jones'},
{'D': 'Tom Jones'},
{'DP': 'Bob Jones'}
]
顺序无关紧要,这可以是新列表,也可以就地完成
参考方案
这应该完成工作:
>>> scratch = {v : k for d in L1 for k, v in d.items()}
>>> for d in L2:
for k, v in d.items():
if v not in scratch:
scratch['v'] = ''
scratch[v] += k
>>> result = [{v: k} for k, v in scratch.items()]
>>> result
[{'DP': 'Jim Jones'}, {'D': 'Tom Jones'}, {'DP': 'Bob Jones'}]
它在做什么:
步骤1)以名称为关键字建立暂存字典:
scratch = {'Jim Jones': 'D', 'Tom Jones': 'D', 'Bob Jones': 'D'}
步骤2)循环遍历L2中的名称,然后从头开始查找名称并更新其值。
scratch['Jim Jones'] += 'P'
步骤3)将草稿字典重新变成字典列表:
result = [{'DP': 'Jim Jones'}, {'D': 'Tom Jones'}, {'DP': 'Bob Jones'}]
解决问题的关键
核心思想是名称应该是单个字典中的键。这样可以轻松进行查找和更新。
希望这可以帮助 :-)
在返回'Response'(Python)中传递多个参数 - python我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…
Python exchangelib在子文件夹中读取邮件 - python我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…
R'relaimpo'软件包的Python端口 - python我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。
Python ThreadPoolExecutor抑制异常 - pythonfrom concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED def div_zero(x): print('In div_zero') return x / 0 with ThreadPoolExecutor(max_workers=4) as execut…