python - Python - 比较两个字典[匹配区分大小写的值]
问题描述
我正在尝试在 Python 中比较两个字典(包含数组的列表)。
这里有两个字典:
tag=[{'Key': 'Base', 'Value': 'ny'}, {'Key': 'Name', 'Value': 'newyork'}]
filters=[{'Key': 'Name','Value': ['Newyork', 'newyork','NewYork']}]
这里的任务是将filters
dict与tag
dict进行比较。
以下我尝试过的方法不起作用:
>>> tag == filters
False
>>> tag[1] == filters
False
>>> tag[1] == filters[0]
False
我想检查是否tag
有一个与之匹配的数组filters
应该返回true
。
可能,它能够比较Key
数组中的值,因为它有一个完全匹配的字符串,但是Value
在不同的情况下写入相同的字符串,它不匹配。
我想在比较时涵盖的内容:
- 如果任何数组匹配应返回 true,则将其与字典中的每个数组进行比较
- 考虑 和 的所有类型的可能情况:
key
和values
'Name','name','NAME'
'Newyork', 'newyork','NewYork'
任何帮助表示赞赏。提前致谢!
解决方案
这些都是非常奇怪的数据结构,但我认为它们是 aws cli/api 返回的那种东西。我敢打赌,有一种 cli/api 方法可以过滤您正在尝试执行的操作,您真的应该发布一个关于您尝试从 aws 查询什么的问题(请参阅参考资料)。但暂时忽略这一点:
请注意,这tag
不是字典,而是字典列表。您需要首先选择其中包含的字典Key:Name
。
next(element for element in tag if element['Key'] == 'Name')
=> {'Key': 'Name', 'Value': 'newyork'}
或者更确切地说,您想选择与Key:xxx
您的过滤器相同的字典。
next(element for element in tag if element['Key'] == filters[0]['Key'])
=> {'Key': 'Name', 'Value': 'newyork'}
现在您想将Value
所选字典中的内容与您的过滤器进行比较Value
selectedDict=next(element for element in tag if element['Key'] == filters[0]['Key'])
selectedDict['Value'] in filters[0]['Value']
=> True
在一行中,
next(element for element in tag if element['Key'] == filters[0]['Key'])['Value'] in filters[0]['Value']
=> True
推荐阅读
- caching - X-Cache-Status 始终使用 Kong 代理缓存插件绕过
- c# - 传递 sqlparameter 中的值列表,可能是结构化的
- c - 使用防御性编程初始化结构数组的问题
- java - 无法识别的字段:jerseyClient dropwizard yml?
- azure-ad-graph-api - AADSTS50034:xxx.onmicrosoft.com 目录中不存在用户帐户 Microsoft.AzureAD.Telemetry.Diagnostics.PII
- javascript - 使用javascript函数调用ajax来更新MYSQL结果
- php - TCPDF 中的自定义 HTML 页脚
- groovy - 从测试套件拆卸脚本访问测试用例属性
- matlab - 如何减少 xcorr 函数的执行时间?
- typescript - tsc 在 dist 中创建 src 文件夹