Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.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中的词典列表进行分区_Python_List_Dictionary_Iteration - Fatal编程技术网

根据值对Python中的词典列表进行分区

根据值对Python中的词典列表进行分区,python,list,dictionary,iteration,Python,List,Dictionary,Iteration,我有一个编码挑战,需要我创建一个逻辑,将字典列表划分为三个新的dict列表。新名单需要有同样数量的经验丰富和缺乏经验的人员。原始名单上有偶数名经验丰富和缺乏经验的人员。我不知道如何形成这一挑战的逻辑。以下是一个简短的版本: mylist = [ {'name': 'Jade', 'height': 64, 'experience': 'n'}, {'name': 'Diego', 'height': 60, 'experience': 'y'}, {'name': 'T

我有一个编码挑战,需要我创建一个逻辑,将字典列表划分为三个新的dict列表。新名单需要有同样数量的经验丰富和缺乏经验的人员。原始名单上有偶数名经验丰富和缺乏经验的人员。我不知道如何形成这一挑战的逻辑。以下是一个简短的版本:

mylist = [
    {'name': 'Jade', 'height': 64, 'experience': 'n'}, 
    {'name': 'Diego', 'height': 60, 'experience': 'y'},
    {'name': 'Twee', 'height': 70, 'experience': 'n'}, 
    {'name': 'Wence', 'height': 72, 'experience': 'y'},
    {'name': 'Shubha', 'height': 65, 'experience': 'y'},
    {'name': 'Taylor', 'height': 68, 'experience': 'n'}
]
新的DICT需要同等数量的经验丰富和缺乏经验的人员,如:

newlist_1 = [
    {'name': 'Diego', 'height': 60, 'experience': 'y'},
    {'name': 'Jade', 'height': 64, 'experience': 'n'},
]

newlist_2 = [
    {'name': 'Wence', 'height': 72, 'experience': 'y'},
    {'name': 'Twee', 'height': 70, 'experience': 'n'},           
]

newlist_3 = [
    {'name': 'Shubha', 'height': 65, 'experience': 'y'},
    {'name': 'Taylor', 'height': 68, 'experience': 'n'}
]

我保留原始列表,因此最终需要总共四个集合。

尝试将字典列表分为三个单独的列表

list1 = mylist[0:2]
list2 = mylist[2:4]
list3 = mylist[4:6]

您可以有两个列表-一个是有经验的列表,另一个是没有经验的列表,并从中创建您需要的任何列表,例如:

experienced = [worker for worker in mylist if 'y' == worker['experience']]
inexperienced = [worker for worker in mylist if 'n' == worker['experience']]
list1, list2, list3 = map(list, zip(experienced, inexperienced))
将产生以下

from pprint import pprint
pprint(make_teams(mylist))

{'members': [{'experience': 'n', 'height': 64, 'name': 'Jade'},
             {'experience': 'y', 'height': 60, 'name': 'Diego'},
             {'experience': 'n', 'height': 70, 'name': 'Twee'},
             {'experience': 'y', 'height': 72, 'name': 'Wence'},
             {'experience': 'y', 'height': 65, 'name': 'Shubha'},
             {'experience': 'n', 'height': 68, 'name': 'Taylor'}],
 'newlist_1': [{'experience': 'y', 'height': 60, 'name': 'Diego'},
               {'experience': 'n', 'height': 64, 'name': 'Jade'}],
 'newlist_2': [{'experience': 'y', 'height': 72, 'name': 'Wence'},
               {'experience': 'n', 'height': 70, 'name': 'Twee'}],
 'newlist_3': [{'experience': 'y', 'height': 65, 'name': 'Shubha'},
               {'experience': 'n', 'height': 68, 'name': 'Taylor'}]}

>新的目录需要有相同数量的有经验和无经验的人员你的意思是新的目录需要有相同数量的有经验和无经验的人员?在3个列表中相同,或者在三个列表中的每一个列表中相同?这是否意味着原始列表中正好有3n个dict元素,其中n是偶数,并且正好有一半元素有经验:“y”,另一半是“n”?嗨,是的,对不起,这应该是新列表。我已经更新了帖子。非常感谢。您好,是的,原始名单上有偶数名经验丰富和缺乏经验的人员。我已经更新了帖子。非常感谢你。
from pprint import pprint
pprint(make_teams(mylist))

{'members': [{'experience': 'n', 'height': 64, 'name': 'Jade'},
             {'experience': 'y', 'height': 60, 'name': 'Diego'},
             {'experience': 'n', 'height': 70, 'name': 'Twee'},
             {'experience': 'y', 'height': 72, 'name': 'Wence'},
             {'experience': 'y', 'height': 65, 'name': 'Shubha'},
             {'experience': 'n', 'height': 68, 'name': 'Taylor'}],
 'newlist_1': [{'experience': 'y', 'height': 60, 'name': 'Diego'},
               {'experience': 'n', 'height': 64, 'name': 'Jade'}],
 'newlist_2': [{'experience': 'y', 'height': 72, 'name': 'Wence'},
               {'experience': 'n', 'height': 70, 'name': 'Twee'}],
 'newlist_3': [{'experience': 'y', 'height': 65, 'name': 'Shubha'},
               {'experience': 'n', 'height': 68, 'name': 'Taylor'}]}