You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

合并两个字典并生成含更新凭据的字典列表的技术实现求助

对比字典生成带版本的凭据列表

需求说明

对比两个版本的凭据字典,生成包含所有凭据的字典列表。核心要求:当凭据(用户名/密码)发生变更时,同时保留旧版本凭据和修改后的新版本凭据;未变更的凭据仅保留一份。该结构用于PostgreSQL数据库服务中断管理,凭据数据取自Vault。

原始字典定义

两个版本的凭据字典如下(Ansible set_fact 定义):

---
name: "Username/Password version 1"
set_fact:
  dict1: {"a_username": "a1", "a_password" : "apass1", "b_username": "b1", "b_password" : "bpass1", "c_username": "c1", "c_password" : "cpass1"}

name: "Username/Password version 2"
set_fact:
  dict2: {"a_username": "a2", "a_password" : "apass2", "b_username": "b1", "b_password" : "bpass1", "c_username": "c2", "c2_password" : "cpass1"}

目标输出结构

最终生成的字典列表需包含所有新旧凭据:

[
  {"username": "a1", "password": "apass1"},
  {"username": "a2", "password": "apass2"},
  {"username": "b1", "password": "bpass1"},
  {"username": "c1", "password": "cpass1"},
  {"c_username": "c1", "c_password" : "cpass1"},
  {"c_username": "c2", "c2_password" : "cpass1"}
]

实现思路

  • 拆分凭据前缀:从字典键中提取前缀(如a_、b_、c_),将每个前缀对应的用户名和密码视为一组凭据。
  • 对比版本差异:对每个前缀组,对比dict1和dict2中的凭据值:
    • 若凭据未变更,仅将该组凭据添加一次到列表中;
    • 若凭据发生变更,同时添加旧版本(来自dict1)和新版本(来自dict2)的凭据到列表中。
  • 统一格式整理:将每组凭据整理为目标格式的字典,确保列表包含所有必要的凭据版本。

内容的提问来源于stack exchange,提问作者fable101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:15:05