python-3.x - 匹配嵌套字典中的项目并返回外键
问题描述
您好我正在尝试编写一些代码来比较几个嵌套字典以匹配特定项目,如果为 true,则返回外部键。
我尝试使用嵌套的 for 循环和字典名称列表来排序和查找匹配项,代码首先获取单个字典 dict1 和 dict2,然后比较每个字典中的 ['ID'] 键以进行匹配,请参见下文:
Dictionary1 = {'key1':{'ID':'ID1'}, 'key2':{'ID':'ID2'}, 'key3':{'ID':'ID3'}}
Dictionary2 = {'key4':{'ID':'ID1'}, 'key5':{'ID':'ID2'}, 'key6':{'ID':'ID3'}}
DictionaryList = [Dictionary1, Dictionary2]
for Dict1 in DictionaryList:
for Dict2 in DictionaryList:
for Key1 in Dict1:
for Key2 in Dict2:
if Dict1[Key1]['ID'] == Dict2[Key2]['ID']:
print('Dictionary1' + ': ' + Key1 + ' // ' 'Dictionary2' + ': ' + Key2)
此代码返回 12 个匹配项及其外键,其中大部分是错误的,见下文:
Dictionary1: key1 // Dictionary2: key1
Dictionary1: key2 // Dictionary2: key2
Dictionary1: key3 // Dictionary2: key3
Dictionary1: key1 // Dictionary2: key4
Dictionary1: key2 // Dictionary2: key5
Dictionary1: key3 // Dictionary2: key6
Dictionary1: key4 // Dictionary2: key1
Dictionary1: key5 // Dictionary2: key2
Dictionary1: key6 // Dictionary2: key3
Dictionary1: key4 // Dictionary2: key4
Dictionary1: key5 // Dictionary2: key5
Dictionary1: key6 // Dictionary2: key6
我怀疑这是因为字典被相互匹配了几次,即代码将 Dictionary1 与 Dictionary1 进行比较,然后将 Dictionary2 与 Dictionary2 进行比较,依此类推。
预期的结果将是打印 3 个匹配项的代码:
Dictionary1: key1 // Dictionary2: key4
Dictionary1: key2 // Dictionary2: key5
Dictionary1: key3 // Dictionary2: key6
我是 python/编程的新手,所以任何帮助都将不胜感激。
解决方案
我不确定您为什么将字典组合成一个列表,然后尝试对其进行迭代。您可以简单地使用字典本身:
for Key1 in Dictionary1:
for Key2 in Dictionary2:
if Dictionary1[Key1]['ID'] == Dictionary2[Key2]['ID']:
print('Dictionary1' + ': ' + Key1 + ' // ' 'Dictionary2' + ': ' + Key2)
这将打印
Dictionary1: key1 // Dictionary2: key4
Dictionary1: key2 // Dictionary2: key5
Dictionary1: key3 // Dictionary2: key6
推荐阅读
- javascript - JavaScript:将事件侦听器添加到页面加载时不存在特定表单元素的动态表单?
- angular6 - 如何对 Angular 中的 BehaviourSubject 订阅进行单元测试
- html - 如何使 .css 文件与 Microsoft Edge 和 Internet Explorer 中的 .html 文件一起运行?
- python-3.x - BeatuifulSoup 返回重复数据而不是迭代
- android - 如何在 mvvm 模式下在 android 中有一个带有房间的启动画面。?
- perl - 编辑 Perl $PERL5LIB 和 @INC
- python - 芹菜工人不从数据库中获取更新的值
- java - 如何将 Arraylist 传递给另一个类
- python - 如何使用python提取包含pdf中图像的页面?
- angular - How Can I simplify this nested loop in ES6?