在我的剧本中,我有一个字典列表。我只想保留重复的字典。
基本上是这样的:
{
"l": [
{
"a": "d",
"b": "e",
"c": "f",
},
{
"a": "ggg",
"b": "hhh",
"c": "iii",
},
{
"a": "jjj",
"b": "kkk",
"c": "lll",
},
{
"a": "d",
"b": "e",
"c": "f",
}
]
}
我尝试了不同的事情,但在某些时候我意识到我可能是在重新发明轮子。但我找不到任何模块。
我想你正在寻找
l | difference(l | unique) | unique
不幸的是,过滤器difference不适用于字典列表。您可以自己编写一个过滤器。例如,
shell > cat filter_plugins/duplicates.py
def duplicates(l):
return [i for i in l if l.count(i) > 1]
class FilterModule(object):
def filters(self):
return {
'duplicates': duplicates,
}
然后,下面的剧本
- hosts: localhost
vars:
l:
- {a: d, b: e, c: f}
- {a: ggg, b: hhh, c: iii}
- {a: jjj, b: kkk, c: lll}
- {a: d, b: e, c: f}
result: "{{ l | duplicates | unique }}"
tasks:
- debug:
var: result | to_yaml
可能提供您想要的
result:
- {a: d, b: e, c: f}