R
from itertools import groupby
lst = [['Захарычев', 'Junior-Разработчик', '50000', '8(916)523-**-**'],
['test-case(spaces)', 'test', '50000', '8(916)523-**-**'],
['test-case(lead-spaces)', 'test', '50000', '8(916)523-**-**'],
['test-case(tail-spaces)', 'test', '50000', '8(916)523-**-**'],
['Чукалов', 'инженер', '49999', '8(***)***-**-**'],
['Безенков', 'инженер', '40000', '8(***)***-**-**'],
['Королёв', 'web-программист', '30000', '8(***)***-__-__'],
['ы', 'хирург', '220000', '8(***)***-__-__'],
['ы', 'терапевт', '25000', '8(***)***-__-__'],
['ы', 'уборщица', '15000', '8(***)***-__-__'],
['ы', 'уборщица', '15000', '8(***)***-__-__'],
['ы', 'уборщица', '15000', '8(***)***-__-__'],
['ы', 'Senior-developer', '330000', '8(***)***-__-__'],
['ы', 'Senior-developer', '345000', '8(***)***-__-__'],
['ы', 'Middle-developer', '150000', '8(***)***-__-__']]
res = {}
for k, g in groupby(lst, key=lambda x: x[1]):
res.setdefault(k, list(g))
res. (Extracted by pretty print):{ 'Junior-Разработчик': [ [ 'Захарычев',
'Junior-Разработчик',
'50000',
'8(916)523-**-**']],
'Middle-developer': [ [ 'ы',
'Middle-developer',
'150000',
'8(***)***-__-__']],
'Senior-developer': [ [ 'ы',
'Senior-developer',
'330000',
'8(***)***-__-__'],
[ 'ы',
'Senior-developer',
'345000',
'8(***)***-__-__']],
'test': [ ['test-case(spaces)', 'test', '50000', '8(916)523-**-**'],
['test-case(lead-spaces)', 'test', '50000', '8(916)523-**-**'],
['test-case(tail-spaces)', 'test', '50000', '8(916)523-**-**']],
'web-программист': [ [ 'Королёв',
'web-программист',
'30000',
'8(***)***-__-__']],
'инженер': [ ['Чукалов', 'инженер', '49999', '8(***)***-**-**'],
['Безенков', 'инженер', '40000', '8(***)***-**-**']],
'терапевт': [['ы', 'терапевт', '25000', '8(***)***-__-__']],
'уборщица': [ ['ы', 'уборщица', '15000', '8(***)***-__-__'],
['ы', 'уборщица', '15000', '8(***)***-__-__'],
['ы', 'уборщица', '15000', '8(***)***-__-__']],
'хирург': [['ы', 'хирург', '220000', '8(***)***-__-__']]}
There's still a way to use pandas. In this case, I will deliver the result as a dictionary with which it may be more convenient to work:import pandas as pd
res = pd.DataFrame(lst).groupby(1).agg(list).to_dict(orient="index")
res:{ 'Junior-Разработчик': { 0: ['Захарычев'],
2: ['50000'],
3: ['8(916)523--']},
'Middle-developer': {0: ['ы'], 2: ['150000'], 3: ['8()--']},
'Senior-developer': { 0: ['ы', 'ы'],
2: ['330000', '345000'],
3: ['8()--', '8()--']},
'test': { 0: [ 'test-case(spaces)',
'test-case(lead-spaces)',
'test-case(tail-spaces)'],
2: ['50000', '50000', '50000'],
3: ['8(916)523--', '8(916)523--', '8(916)523--']},
'web-программист': {0: ['Королёв'], 2: ['30000'], 3: ['8()--']},
'инженер': { 0: ['Чукалов', 'Безенков'],
2: ['49999', '40000'],
3: ['8()--', '8()--']},
'терапевт': {0: ['ы'], 2: ['25000'], 3: ['8()--']},
'уборщица': { 0: ['ы', 'ы', 'ы'],
2: ['15000', '15000', '15000'],
3: [ '8()--',
'8()--',
'8()--']},
'хирург': {0: ['ы'], 2: ['220000'], 3: ['8()--']}}