Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Sort sets by item values
#2
Using sorted with a key function to obtain the eq value

Edit: added 2nd and 3rd sorting, not sure if 2nd and 3rd sorting key is how you want it

values = {'permit tcp host 192.168.23.6 host 192.168.2.31 eq 445',
          'permit tcp host 192.168.23.5 host 192.168.2.31 eq 135',
          'permit udp host 192.168.23.2 host 192.168.2.32 eq 53',
          'permit tcp host 192.168.23.5 host 192.168.2.26 eq 49749',
          'permit tcp host 192.168.23.4 host 192.168.2.23 eq 80',
          'permit tcp host 192.168.23.2 host 192.168.2.32 eq 445',
          'permit tcp host 192.168.23.9 host 192.168.2.31 eq 445',
          'permit udp host 192.168.23.5 host 192.168.2.32 eq 53',
          'permit udp host 192.168.23.7 host 192.168.2.31 eq 53',
          'permit tcp host 192.168.23.5 host 192.168.2.32 eq 389',
          'permit tcp host 192.168.23.9 host 192.168.2.26 eq 49749',
          'permit tcp host 192.168.23.7 host 192.168.2.32 eq 49670',
          'permit udp host 192.168.23.5 host 192.168.2.31 eq 53',
          'permit udp host 192.168.23.7 host 192.168.2.32 eq 53',
          'permit udp host 192.168.23.9 host 192.168.2.32 eq 53',
          'permit tcp host 192.168.23.6 host 192.168.2.23 eq 80',
          'permit udp host 192.168.23.3 host 192.168.2.31 eq 53',
          'permit udp host 192.168.23.5 host 192.168.2.32 eq 389',
          'permit tcp host 192.168.23.9 host 192.168.2.31 eq 135',
          'permit udp host 192.168.23.5 host 192.168.2.32 eq 123',
          'permit udp host 192.168.23.1 host 192.168.2.32 eq 53',
          'permit tcp host 192.168.23.1 host 192.168.2.23 eq 80',
          'permit tcp host 192.168.23.8 host 192.168.2.23 eq 80',
          'permit tcp host 192.168.23.1 host 192.168.2.32 eq 135',
          'permit udp host 192.168.23.2 host 192.168.2.31 eq 53',
          'permit udp host 192.168.23.6 host 192.168.2.31 eq 389',
          'permit tcp host 192.168.23.3 host 192.168.2.32 eq 445',
          'permit tcp host 192.168.23.2 host 192.168.2.28 eq 445',
          'permit tcp host 192.168.23.7 host 192.168.2.23 eq 8530',
          'permit tcp host 192.168.23.4 host 192.168.2.32 eq 88',
          'permit udp host 192.168.23.9 host 192.168.2.31 eq 389',
          'permit tcp host 192.168.23.5 host 192.168.2.31 eq 88',
          'permit udp host 192.168.23.8 host 192.168.2.31 eq 389',
          'permit udp host 192.168.23.8 host 192.168.2.32 eq 389',
          'permit tcp host 192.168.23.2 host 192.168.2.23 eq 80',
          'permit tcp host 192.168.23.6 host 192.168.2.31 eq 389',
          'permit udp host 192.168.23.1 host 192.168.2.32 eq 389',
          'permit tcp host 192.168.23.2 host 192.168.2.26 eq 49749',
          'permit tcp host 192.168.23.5 host 192.168.2.32 eq 135',
          'permit tcp host 192.168.23.5 host 192.168.2.23 eq 8530',
          'permit tcp host 192.168.23.1 host 192.168.2.32 eq 445',
          'permit udp host 192.168.23.8 host 192.168.2.31 eq 53',
          'permit tcp host 192.168.23.1 host 192.168.2.23 eq 8530',
          'permit tcp host 192.168.23.3 host 192.168.2.23 eq 80',
          'permit tcp host 192.168.23.9 host 192.168.2.31 eq 389',
          'permit udp host 192.168.23.9 host 192.168.2.31 eq 53',
          'permit tcp host 192.168.23.6 host 192.168.2.31 eq 135',
          'permit tcp host 192.168.23.2 host 192.168.2.23 eq 8530',
          'permit udp host 192.168.23.6 host 192.168.2.31 eq 53',
          'permit udp host 192.168.23.4 host 192.168.2.32 eq 389',
          'permit udp host 192.168.23.1 host 192.168.2.31 eq 53',
          'permit tcp host 192.168.23.7 host 192.168.2.32 eq 445',
          'permit tcp host 192.168.23.4 host 192.168.2.31 eq 135',
          'permit tcp host 192.168.23.5 host 192.168.2.23 eq 80',
          'permit tcp host 192.168.23.1 host 192.168.2.31 eq 445',
          'permit tcp host 192.168.23.5 host 192.168.2.31 eq 389',
          'permit udp host 192.168.23.4 host 192.168.2.31 eq 53',
          'permit tcp host 192.168.23.5 host 192.168.2.28 eq 445',
          'permit udp host 192.168.23.3 host 192.168.2.32 eq 53',
          'permit udp host 192.168.23.4 host 192.168.2.32 eq 53',
          'permit tcp host 192.168.23.5 host 192.168.2.32 eq 49670',
          'permit tcp host 192.168.23.8 host 192.168.2.31 eq 389',
          'permit tcp host 192.168.23.8 host 192.168.2.32 eq 445',
          'permit tcp host 192.168.23.8 host 192.168.2.31 eq 49667',
          'permit tcp host 192.168.23.4 host 192.168.2.31 eq 445',
          'permit udp host 192.168.23.8 host 192.168.2.32 eq 53',
          'permit tcp host 192.168.23.5 host 192.168.2.32 eq 445',
          'permit tcp host 192.168.23.4 host 192.168.2.32 eq 445',
          'permit tcp host 192.168.23.5 host 192.168.2.28 eq 135',
          'permit tcp host 192.168.23.4 host 192.168.2.31 eq 49667',
          'permit tcp host 192.168.23.7 host 192.168.2.23 eq 80',
          'permit tcp host 192.168.23.1 host 192.168.2.32 eq 49670',
          'permit tcp host 192.168.23.9 host 192.168.2.23 eq 80',
          'permit udp host 192.168.23.6 host 192.168.2.32 eq 53'}


def sort_key(item):
    rest, eq = item.split('eq')
    _, ip1, ip2 = rest.split('host')
    ip1 = tuple(int(i) for i in ip1.split('.'))
    ip2 = tuple(int(i) for i in ip2.split('.'))
    return int(eq), ip2, ip1

print(sort_key('permit udp host 192.168.23.6 host 192.168.2.32 eq 53'))

sorted_values = sorted(values, key=sort_key)
 
print(sorted_values)
Output:
(53, (192, 168, 2, 32), (192, 168, 23, 6)) ['permit udp host 192.168.23.1 host 192.168.2.31 eq 53', 'permit udp host 192.168.23.2 host 192.168.2.31 eq 53', 'permit udp host 192.168.23.3 host 192.168.2.31 eq 53', 'permit udp host 192.168.23.4 host 192.168.2.31 eq 53', 'permit udp host 192.168.23.5 host 192.168.2.31 eq 53', 'permit udp host 192.168.23.6 host 192.168.2.31 eq 53', 'permit udp host 192.168.23.7 host 192.168.2.31 eq 53', 'permit udp host 192.168.23.8 host 192.168.2.31 eq 53', 'permit udp host 192.168.23.9 host 192.168.2.31 eq 53', 'permit udp host 192.168.23.1 host 192.168.2.32 eq 53', 'permit udp host 192.168.23.2 host 192.168.2.32 eq 53', 'permit udp host 192.168.23.3 host 192.168.2.32 eq 53', 'permit udp host 192.168.23.4 host 192.168.2.32 eq 53', 'permit udp host 192.168.23.5 host 192.168.2.32 eq 53', 'permit udp host 192.168.23.6 host 192.168.2.32 eq 53', 'permit udp host 192.168.23.7 host 192.168.2.32 eq 53', 'permit udp host 192.168.23.8 host 192.168.2.32 eq 53', 'permit udp host 192.168.23.9 host 192.168.2.32 eq 53', 'permit tcp host 192.168.23.1 host 192.168.2.23 eq 80', 'permit tcp host 192.168.23.2 host 192.168.2.23 eq 80', 'permit tcp host 192.168.23.3 host 192.168.2.23 eq 80', 'permit tcp host 192.168.23.4 host 192.168.2.23 eq 80', 'permit tcp host 192.168.23.5 host 192.168.2.23 eq 80', 'permit tcp host 192.168.23.6 host 192.168.2.23 eq 80', 'permit tcp host 192.168.23.7 host 192.168.2.23 eq 80', 'permit tcp host 192.168.23.8 host 192.168.2.23 eq 80', 'permit tcp host 192.168.23.9 host 192.168.2.23 eq 80', 'permit tcp host 192.168.23.5 host 192.168.2.31 eq 88', 'permit tcp host 192.168.23.4 host 192.168.2.32 eq 88', 'permit udp host 192.168.23.5 host 192.168.2.32 eq 123', 'permit tcp host 192.168.23.5 host 192.168.2.28 eq 135', 'permit tcp host 192.168.23.4 host 192.168.2.31 eq 135', 'permit tcp host 192.168.23.5 host 192.168.2.31 eq 135', 'permit tcp host 192.168.23.6 host 192.168.2.31 eq 135', 'permit tcp host 192.168.23.9 host 192.168.2.31 eq 135', 'permit tcp host 192.168.23.1 host 192.168.2.32 eq 135', 'permit tcp host 192.168.23.5 host 192.168.2.32 eq 135', 'permit tcp host 192.168.23.5 host 192.168.2.31 eq 389', 'permit udp host 192.168.23.6 host 192.168.2.31 eq 389', 'permit tcp host 192.168.23.6 host 192.168.2.31 eq 389', 'permit udp host 192.168.23.8 host 192.168.2.31 eq 389', 'permit tcp host 192.168.23.8 host 192.168.2.31 eq 389', 'permit udp host 192.168.23.9 host 192.168.2.31 eq 389', 'permit tcp host 192.168.23.9 host 192.168.2.31 eq 389', 'permit udp host 192.168.23.1 host 192.168.2.32 eq 389', 'permit udp host 192.168.23.4 host 192.168.2.32 eq 389', 'permit tcp host 192.168.23.5 host 192.168.2.32 eq 389', 'permit udp host 192.168.23.5 host 192.168.2.32 eq 389', 'permit udp host 192.168.23.8 host 192.168.2.32 eq 389', 'permit tcp host 192.168.23.2 host 192.168.2.28 eq 445', 'permit tcp host 192.168.23.5 host 192.168.2.28 eq 445', 'permit tcp host 192.168.23.1 host 192.168.2.31 eq 445', 'permit tcp host 192.168.23.4 host 192.168.2.31 eq 445', 'permit tcp host 192.168.23.6 host 192.168.2.31 eq 445', 'permit tcp host 192.168.23.9 host 192.168.2.31 eq 445', 'permit tcp host 192.168.23.1 host 192.168.2.32 eq 445', 'permit tcp host 192.168.23.2 host 192.168.2.32 eq 445', 'permit tcp host 192.168.23.3 host 192.168.2.32 eq 445', 'permit tcp host 192.168.23.4 host 192.168.2.32 eq 445', 'permit tcp host 192.168.23.5 host 192.168.2.32 eq 445', 'permit tcp host 192.168.23.7 host 192.168.2.32 eq 445', 'permit tcp host 192.168.23.8 host 192.168.2.32 eq 445', 'permit tcp host 192.168.23.1 host 192.168.2.23 eq 8530', 'permit tcp host 192.168.23.2 host 192.168.2.23 eq 8530', 'permit tcp host 192.168.23.5 host 192.168.2.23 eq 8530', 'permit tcp host 192.168.23.7 host 192.168.2.23 eq 8530', 'permit tcp host 192.168.23.4 host 192.168.2.31 eq 49667', 'permit tcp host 192.168.23.8 host 192.168.2.31 eq 49667', 'permit tcp host 192.168.23.1 host 192.168.2.32 eq 49670', 'permit tcp host 192.168.23.5 host 192.168.2.32 eq 49670', 'permit tcp host 192.168.23.7 host 192.168.2.32 eq 49670', 'permit tcp host 192.168.23.2 host 192.168.2.26 eq 49749', 'permit tcp host 192.168.23.5 host 192.168.2.26 eq 49749', 'permit tcp host 192.168.23.9 host 192.168.2.26 eq 49749']
Reply


Messages In This Thread
Sort sets by item values - by Sergey - Apr-18-2019, 11:33 AM
RE: Sort sets by item values - by Yoriz - Apr-18-2019, 11:59 AM
RE: Sort sets by item values - by DeaD_EyE - Apr-18-2019, 12:00 PM
RE: Sort sets by item values - by Sergey - Apr-18-2019, 12:42 PM
RE: Sort sets by item values - by Sergey - Apr-19-2019, 10:50 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  How to sort .csv file test log which item first fail and paint color SamLiu 24 5,726 Sep-03-2022, 07:32 AM
Last Post: Pedroski55
Photo a.sort() == b.sort() all the time 3lnyn0 1 1,452 Apr-19-2022, 06:50 PM
Last Post: Gribouillis
  Peculiar pattern from printing of sets SahandJ 7 1,883 Dec-29-2021, 06:31 PM
Last Post: bowlofred
  Remove an item from a list contained in another item in python CompleteNewb 19 6,245 Nov-11-2021, 06:43 AM
Last Post: Gribouillis
  How does one combine 2 data sets ? detlefschmitt 2 1,802 Sep-03-2021, 03:38 AM
Last Post: detlefschmitt
  How to sort values descending from a row in a dataframe using python sankarachari 1 1,505 Aug-16-2021, 08:55 AM
Last Post: jamesaarr
  Looping Through Large Data Sets JoeDainton123 10 4,688 Oct-18-2020, 02:58 PM
Last Post: buran
  comprehension for sets Skaperen 2 1,984 Aug-07-2020, 10:12 PM
Last Post: Skaperen
  Sort y axis by descening values matplotlib mrsenorchuck 0 3,918 Dec-08-2019, 08:13 PM
Last Post: mrsenorchuck
  sort lists of lists with multiple criteria: similar values need to be treated equal stillsen 2 3,536 Mar-20-2019, 08:01 PM
Last Post: stillsen

Forum Jump:

User Panel Messages

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