How to combine like elements in list?

Question:

I’m trying to reorganize my list according to its peers.

I have this list:

['datetime', 'INMET_BRASILIA_A001_M-DVENTO', 'INMET_BRASILIA_A001_M-PREC_MM', 'INMET_BRASILIA_A001_M-PRESS_HPA', 'INMET_CURITIBA_A807_M-DVENTO', 'INMET_CURITIBA_A807_M-PREC_MM', 'INMET_CURITIBA_A807_M-PRESS_HPA']

and i want to do something like this:

['datetime', 'INMET_BRASILIA_A001_M-DVENTO', 'INMET_CURITIBA_A807_M-DVENTO', 'INMET_BRASILIA_A001_M-PREC_MM', 'INMET_CURITIBA_A807_M-PREC_MM', 'INMET_BRASILIA_A001_M-PRESS_HPA', 'INMET_CURITIBA_A807_M-PRESS_HPA']

the element ‘datetime’ must be the first element in list, but i think i can do this after reordered list

Asked By: Lucas Medeiros

||

Answers:

Full Code

data = ['datetime', 'INMET_BRASILIA_A001_M-DVENTO', 'INMET_CURITIBA_A807_M-DVENTO', 'INMET_BRASILIA_A001_M-PREC_MM',
        'INMET_CURITIBA_A807_M-PREC_MM', 'INMET_BRASILIA_A001_M-PRESS_HPA', 'INMET_CURITIBA_A807_M-PRESS_HPA']
data.remove("datetime") # removing datetime as it is the odd one in the list
data = sorted(data, key=lambda x: x.split("-")[-1])# sorting based on the last element ie. element after '-'
data.insert(0, "datetime") # Inserting the odd element 'datetime' back
print(data)

Output

['datetime', 'INMET_BRASILIA_A001_M-DVENTO', 'INMET_CURITIBA_A807_M-DVENTO', 'INMET_BRASILIA_A001_M-PREC_MM', 'INMET_CURITIBA_A807_M-PREC_MM', 'INMET_BRASILIA_A001_M-PRESS_HPA', 'INMET_CURITIBA_A807_M-PRESS_HPA']

Hope this helps. happy Coding 🙂

Answered By: Amysoj-Louis

If the last "word" is prefixed by hyphen then:

indata = ['datetime', 'INMET_BRASILIA_A001_M-DVENTO', 'INMET_BRASILIA_A001_M-PREC_MM', 'INMET_BRASILIA_A001_M-PRESS_HPA', 'INMET_CURITIBA_A807_M-DVENTO', 'INMET_CURITIBA_A807_M-PREC_MM', 'INMET_CURITIBA_A807_M-PRESS_HPA']

print([indata[0]] + sorted(indata[1:], key=lambda e: e.split('-')[-1]))

Output:

['datetime', 'INMET_BRASILIA_A001_M-DVENTO', 'INMET_CURITIBA_A807_M-DVENTO', 'INMET_BRASILIA_A001_M-PREC_MM', 'INMET_CURITIBA_A807_M-PREC_MM', 'INMET_BRASILIA_A001_M-PRESS_HPA', 'INMET_CURITIBA_A807_M-PRESS_HPA']
Answered By: Cobra
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.