Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 根据条件从DICT列表中生成唯一的DICT对_Python_List_Sorting_Dictionary_Combinations - Fatal编程技术网

Python 根据条件从DICT列表中生成唯一的DICT对

Python 根据条件从DICT列表中生成唯一的DICT对,python,list,sorting,dictionary,combinations,Python,List,Sorting,Dictionary,Combinations,我有一张单子,我把它分类如下: the_list = [ {'name': 'bobby', 'sport_type': 'football'}, {'name': 'jenny', 'sport_type': 'football'}, {'name': 'karl', 'sport_type': 'football'}, {'name': 'bobby', 'sport_type': 'hokey'}, {'name': 'jenny', 'sport_type': 'hokey'}, {'n

我有一张单子,我把它分类如下:

the_list = [
{'name': 'bobby', 'sport_type': 'football'},
{'name': 'jenny', 'sport_type': 'football'},
{'name': 'karl', 'sport_type': 'football'},
{'name': 'bobby', 'sport_type': 'hokey'},
{'name': 'jenny', 'sport_type': 'hokey'},
{'name': 'karl', 'sport_type': 'hokey'},  
{'name': 'bobby', 'sport_type': 'tennis'},
{'name': 'jenny', 'sport_type': 'tennis'},
{'name': 'karl', 'sport_type': 'tennis'},
]
列表长度为n,因此将有更多具有不同名称键和运动类型键的DICT。我需要根据相同的运动类型和!=不同的名字。像这样:

need_to = [
[{'name': 'bobby', 'sport_type': 'football'},{'name': 'jenny', 'sport_type': 'football'}],
[{'name': 'jenny', 'sport_type': 'football'},{'name': 'karl', 'sport_type': 'football'}],
[{'name': 'bobby', 'sport_type': 'football'},{'name': 'karl', 'sport_type': 'football'}],
[{'name': 'bobby', 'sport_type': 'hokey'},{'name': 'jenny', 'sport_type': 'hokey'}],
[{'name': 'jenny', 'sport_type': 'hokey'},{'name': 'karl', 'sport_type': 'hokey'}],
[{'name': 'bobby', 'sport_type': 'hokey'},{'name': 'karl', 'sport_type': 'hokey''}], 
[{'name': 'bobby', 'sport_type': 'tennis'},{'name': 'jenny', 'sport_type': 'tennis'}],
[{'name': 'jenny', 'sport_type': 'tennis'},{'name': 'karl', 'sport_type': 'tennis'}],
[{'name': 'bobby', 'sport_type': 'tennis'},{'name': 'karl', 'sport_type': 'tennis'}],
]
所以没有反向重复a+b,b+a。我该怎么做

您可以使用它

>>> import itertools
>>> [c for c in itertools.combinations(the_list, 2) if c[0]['sport_type'] == c[1]['sport_type']]
[({'name': 'bobby', 'sport_type': 'football'},{'name': 'jenny', 'sport_type': 'football'}),
 ({'name': 'bobby', 'sport_type': 'football'},{'name': 'karl', 'sport_type': 'football'}),
 ({'name': 'jenny', 'sport_type': 'football'},{'name': 'karl', 'sport_type': 'football'}),
 ({'name': 'bobby', 'sport_type': 'hokey'},{'name': 'jenny', 'sport_type': 'hokey'}),
 ({'name': 'bobby', 'sport_type': 'hokey'},{'name': 'karl', 'sport_type': 'hokey'}),
 ({'name': 'jenny', 'sport_type': 'hokey'},{'name': 'karl', 'sport_type': 'hokey'}),
 ({'name': 'bobby', 'sport_type': 'tennis'},{'name': 'jenny', 'sport_type': 'tennis'}),
 ({'name': 'bobby', 'sport_type': 'tennis'},{'name': 'karl', 'sport_type': 'tennis'}),
 ({'name': 'jenny', 'sport_type': 'tennis'},{'name': 'karl', 'sport_type': 'tennis'})]
你可以用这个

>>> import itertools
>>> [c for c in itertools.combinations(the_list, 2) if c[0]['sport_type'] == c[1]['sport_type']]
[({'name': 'bobby', 'sport_type': 'football'},{'name': 'jenny', 'sport_type': 'football'}),
 ({'name': 'bobby', 'sport_type': 'football'},{'name': 'karl', 'sport_type': 'football'}),
 ({'name': 'jenny', 'sport_type': 'football'},{'name': 'karl', 'sport_type': 'football'}),
 ({'name': 'bobby', 'sport_type': 'hokey'},{'name': 'jenny', 'sport_type': 'hokey'}),
 ({'name': 'bobby', 'sport_type': 'hokey'},{'name': 'karl', 'sport_type': 'hokey'}),
 ({'name': 'jenny', 'sport_type': 'hokey'},{'name': 'karl', 'sport_type': 'hokey'}),
 ({'name': 'bobby', 'sport_type': 'tennis'},{'name': 'jenny', 'sport_type': 'tennis'}),
 ({'name': 'bobby', 'sport_type': 'tennis'},{'name': 'karl', 'sport_type': 'tennis'}),
 ({'name': 'jenny', 'sport_type': 'tennis'},{'name': 'karl', 'sport_type': 'tennis'})]
首先使用字典按运动类型分组,然后使用:

首先使用字典按运动类型分组,然后使用:


哇,这正是我需要的!非常感谢你!哇,这正是我需要的!非常感谢你!