Python Forum
Rearranging elements in Python
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rearranging elements in Python
#8
Itertools can help for this task
import io
import itertools as itt

def make_ranges(ints):
    ii = iter(sorted(ints))
    a = b = next(ii)
    for k in ii:
        if k == b + 1:
            b = k
        else:
            yield a, b
            a = b = k
    yield a, b

p = ['Eth1/1', 'Eth1/48','Eth2/1', 'Eth2/4','Eth101/1/1', 'Eth101/1/16', 'Eth101/1/3','Eth102/1/1', 'Eth102/1/2', 'Eth102/1/3','Eth103/1/1', 'Eth103/1/2', 'Eth103/1/3','Eth103/1/4','Eth104/1/1', 'Eth104/1/2', 'Eth104/1/3','Eth104/1/4']

p = [x.split('/') for x in p]
p = [(x[0],) + tuple(int(y) for y in x[1:]) for x in p]
q, r = [sorted(g) for k, g in itt.groupby(sorted(p, key=len), key=len)]

fw1 = io.StringIO()
for rec in q:
    print('/'.join(str(x) for x in rec), file=fw1)

fw2 = io.StringIO()
for k, g in itt.groupby(r, key=lambda x: x[:-1]):
    for a, b in make_ranges(int(x[-1]) for x in g):
        kk = k + (a if a == b else '{}-{}'.format(a, b),)
        print('/'.join(str(x) for x in kk), file=fw2)

print(fw1.getvalue())
print(fw2.getvalue())
Output:
Eth1/1 Eth1/48 Eth2/1 Eth2/4 Eth101/1/1 Eth101/1/3 Eth101/1/16 Eth102/1/1-3 Eth103/1/1-4 Eth104/1/1-4
Reply


Messages In This Thread
Rearranging elements in Python - by Nirmal - Nov-22-2018, 06:26 AM
RE: Rearranging elements in Python - by wavic - Nov-22-2018, 09:04 AM
RE: Rearranging elements in Python - by Nirmal - Nov-22-2018, 09:19 AM
RE: Rearranging elements in Python - by wavic - Nov-22-2018, 09:45 AM
RE: Rearranging elements in Python - by Nirmal - Nov-22-2018, 09:53 AM
RE: Rearranging elements in Python - by wavic - Nov-22-2018, 10:12 AM
RE: Rearranging elements in Python - by Nirmal - Nov-22-2018, 11:08 AM
RE: Rearranging elements in Python - by Gribouillis - Nov-22-2018, 12:29 PM
RE: Rearranging elements in Python - by Nirmal - Nov-23-2018, 03:28 AM
RE: Rearranging elements in Python - by Gribouillis - Nov-23-2018, 07:37 AM
RE: Rearranging elements in Python - by Nirmal - Nov-23-2018, 12:05 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  How to remove some elements from an array in python? gohanhango 9 1,359 Nov-28-2023, 08:35 AM
Last Post: Gribouillis
  ValueError: Length mismatch: Expected axis has 8 elements, new values have 1 elements ilknurg 1 5,249 May-17-2022, 11:38 AM
Last Post: Larz60+
  Sorting Elements via parameters pointing to those elements. rpalmer 3 2,651 Feb-10-2021, 04:53 PM
Last Post: rpalmer
  How does a set in python store the elements? idknuttin 5 2,841 Jul-10-2020, 10:46 PM
Last Post: Gribouillis
  How to sum up the elements of an integer using python split/join? mohanraj1986 5 3,579 Aug-27-2018, 09:13 AM
Last Post: perfringo
  Python show the combinations of list of elements zydjohn 6 7,562 Mar-06-2018, 11:23 PM
Last Post: zydjohn
  [split] Rearranging CSV columns and rows Ivan1 1 2,480 Aug-31-2017, 01:41 AM
Last Post: Ivan1

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020