python - 如何根据值获取所有唯一的字典集?
问题描述
我有一个字典列表,如下所示。
mylist = [{'fname': 'a', 'lname': '1'},
{'fname': 'b', 'lname': '2'},
{'fname': 'c', 'lname': '3'},
{'fname': 'd', 'lname': '3'},
{'fname': 'e', 'lname': '4'},
{'fname': 'f', 'lname': '4'}]
我想找到涵盖所有lname属性的所有不同条目集。例如,期望的结果是:
result = [
[{'fname': 'a', 'lname': '1'},
{'fname': 'b', 'lname': '2'},
{'fname': 'c', 'lname': '3'},
{'fname': 'e', 'lname': '4'}],
[{'fname': 'a', 'lname': '1'},
{'fname': 'b', 'lname': '2'},
{'fname': 'c', 'lname': '3'},
{'fname': 'f', 'lname': '4'}],
[{'fname': 'a', 'lname': '1'},
{'fname': 'b', 'lname': '2'},
{'fname': 'd', 'lname': '3'},
{'fname': 'e', 'lname': '4'}],
[{'fname': 'a', 'lname': '1'},
{'fname': 'b', 'lname': '2'},
{'fname': 'd', 'lname': '3'},
{'fname': 'f', 'lname': '4'}]
]
实现这一目标的最佳方法是什么?
解决方案
我itertools
按照其他人的建议看了看。为我combinations
完成了这项工作。看起来结果的顺序是一样的。
from itertools import combinations
combs = combinations(mylist, 4)
result = []
for item in combs:
x = list(item)
y = []
for dic in item:
y += list(dic.values())
if len(set(y)) is 8: # lists with duplicate values are excluded
result.append(x)
result
推荐阅读
- drupal-8 - 在我的 drupal 站点上安装 drush 时,drush 将显示错误
- xcode - dyld:找不到符号:___chkstk_darwin
- reactjs - 眼镜代码幻灯片扩展不起作用
- tensorflow - 从源代码构建 TensorFlow 服务时出错
- c++ - 如何在 Opengl 中使用多个纹理解决此问题
- python - 在 pandas / python 中对条件值进行分组和计数
- swift - 在数组中查找名称 (JSON)
- r - 不寻常的(对我而言)数据结构:计算两列相互指向彼此的频率
- python - 如何在不询问用户的情况下存储用户详细信息?
- java - jvm或编译器放置的构造函数?