我有两个词典列表,如下所示

devices = [
    {'a': 'b', 'c': 'd'}, 
    {'a': 'e', 'f': 'g'}, 
    {'h': 'i', 'j': 'k'}
]
alldicts = [
    {'a': {'eth1': 'b', 'eth2': 'e'}},
    {'c': {'eth1': 'd', 'eth2': 'o', 'eth3': 'q'}},
    {'f': {'eth1': 'g'}},
    {'h': {'eth1': 'i'}}, 
    {'j': {'eth1': 'k'}}
]

我想要有DICT的输出列表,这样新的列表将有来自设备的所有项目,但将替换来自所有DICTS的值.因此,所需的输出应该如下所示

帖子主题:Re:Колибри

final_list = [
    {'a': 'eth1', 'c': 'eth1'}, 
    {'a': 'eth2', 'f': 'eth1'}, 
    {'h': 'eth1', 'j': 'eth1'}
]

下面是我正在try 的代码,但它没有给我所需的输出

final_int = []
for each in devices:
    for i,j in each.items():
        for each_dict in alldicts:
            for k,l in each_dict.items():
                for a,b in l.items():       
                    if b == j and i == k:
                        final_int.append({i:a})

推荐答案

创建一个临时词典,以便更轻松地搜索正确值:

tmp = {}
for d in alldicts:
    for k, v in d.items():
        for kk, ii in v.items():
            tmp.setdefault(k, {})[ii] = kk

out = [{k: tmp.get(k, {}).get(v) for k, v in d.items()} for d in devices]
print(out)

打印:

[
  {'a': 'eth1', 'c': 'eth1'}, 
  {'a': 'eth2', 'f': 'eth1'}, 
  {'h': 'eth1', 'j': 'eth1'}
]

Python相关问答推荐

带有Postgres的Flask-Data在调用少量API后崩溃

在Python中使用readline函数时如何向下行

解析讨论论坛只给我第一个用户 comments ,但没有给我其他用户回复

当测试字符串100%包含查询字符串时,为什么t fuzzywuzzy s Process.extractBests不给出100%分数?

从单个列创建多个列并按pandas分组

pandas DataFrame中类型转换混乱

遵循轮廓中对象方向的计算线

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

根据在同一数据框中的查找向数据框添加值

numba jitClass,记录类型为字符串

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

沿着数组中的轴计算真实条目

从numpy数组和参数创建收件箱

Mistral模型为不同的输入文本生成相同的嵌入

如何从.cgi网站刮一张表到rame?

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

pandas:排序多级列

Asyncio:如何从子进程中读取stdout?

Python逻辑操作作为Pandas中的条件

巨 Python :逆向猜谜游戏