按值将多维数组拆分为另一个数组

2024-06-02 07:23:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个多维数组,如:

[ ['2217', 'onevalue']
, ['1694', 'twovalue']
, ['2852', 'twovalue']
, ['1994', 'threevalue']
, ['1258', 'onevalue']
, ['1710', 'onevalue']
, ['2348', 'threevalue']
, ['2009', 'threevalue']
, ['3655', 'threevalue'] ]

现在,我想根据每对数据的第二个元素将这些数据拆分为三个数组,例如:

onevalue = [['1258', 'onevalue'],['1710', 'onevalue'],['2217', 'onevalue']]
twovalue = [['1258', 'twovalue'],['1710', 'twovalue'],['2217', 'twovalue']]
threevalue = [['1258', 'threevalue'],['1710', 'threevalue'],['2217', 'threevalue']]

你能帮我提示一下如何在Python中实现这一点吗


3条回答

维护一组键,在您的例子中是{onevalue,twowalue}。对于通过主循环的每次迭代,检查集合中是否存在“onevalue”、“twovalue”部分,如果是,则将其添加到相应的数组中

否则,为相同的数组创建一个新数组,添加完整元素['num','type value'],然后将新类型值添加到集合中。你准备好了

试试这个:

arr = [['2217' , 'onevalue'],
['1694' , 'twovalue'],
['2852' , 'twovalue'],
['1994' , 'threevalue'],
['1258' , 'onevalue'],
['1710' , 'onevalue'],
['2348' , 'threevalue'],
['2009' , 'threevalue'],
['3655' ,'threevalue']]

dic = {}
for item in arr :
    if item[1] in dic :
        dic[item[1]].append(item)
    else :
        dic[item[1]] = [item]


for name,value in dic.items() :
    exec(f"{name} = {value}")

print(onevalue)
print(twovalue)
print(threevalue)

请尝试以下操作:

    temp = dict()
    for i in input_data:
        if i[1] in temp:
            temp[i[1]].append(i)
        else:
            temp[i[1]] = [i]

    for obj in temp.keys():
        print(temp[obj])

# [['2217', 'onevalue'], ['1258', 'onevalue'], ['1710', 'onevalue']]
# [['1694', 'twovalue'], ['2852', 'twovalue']]
# [['1994', 'threevalue'], ['2348', 'threevalue'], ['2009', 'threevalue'], ['3655', 'threevalue']]

相关问题 更多 >