Разбиение многомерного массива в другой по значению - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть многомерный массив, например:

[ ['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?

Ответы [ 4 ]

1 голос
/ 11 апреля 2020

Попробуйте это:

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)
0 голосов
/ 11 апреля 2020

U можете попробовать это:

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

onevalue = []
twovalue = []
threevalue = []
for x in myList:
    if x[1] == 'onevalue':
        onevalue.append(x)
    elif x[1] == 'twovalue':
        twovalue.append(x)
    elif x[1] == 'threevalue':
        threevalue.append(x)

print(onevalue)
print(twovalue)
print(threevalue)
0 голосов
/ 11 апреля 2020

Попробуйте это ниже:

    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']]
0 голосов
/ 11 апреля 2020

Ведение набора ключей, в вашем случае {onevalue, twovalue}. Для каждой итерации по основному l oop проверьте, присутствует ли в наборе часть 'onevalue', 'twovalue', если да, то добавьте к соответствующему массиву.

В противном случае создайте для него новый массив, добавьте полный элемент ['num', 'type-value'] и добавьте новое значение типа в ваш набор. Вы установлены!

...