code: def _sort_shared_logical_disks(logical_disks):
      is_shared = (lambda x: True if ('share_physical_disks' in x and
                                      x['share_physical_disks']) else False)
      num_of_disks = (lambda x: x['number_of_physical_disks']
                      if 'number_of_physical_disks' in x else
                      constants.RAID_LEVEL_MIN_DISKS[x['raid_level']])
      logical_disks_shared = []
      logical_disks_nonshared = []
      for x in logical_disks:
          target = (logical_disks_shared if is_shared(x)
                    else logical_disks_nonshared)
          target.append(x)
      logical_disks_shared_raid1 = []
      logical_disks_shared_excl_raid1 = []
      for x in logical_disks_shared:
          target = (logical_disks_shared_raid1 if x['raid_level'] == '1'
                    else logical_disks_shared_excl_raid1)
          target.append(x)
      logical_disks_shared = sorted(logical_disks_shared_excl_raid1,
                                    reverse=True,
                                    key=num_of_disks)
      check = True
      for x in logical_disks_shared:
          if x['raid_level'] == "1+0":
              x_num = num_of_disks(x)
              for y in logical_disks_shared:
                  if y['raid_level'] != "1+0":
                      y_num = num_of_disks(y)
                      if x_num < y_num:
                          check = (True if y_num % 2 == 0 else False)
                          if check:
                              break
          if not check:
              logical_disks_shared.remove(x)
              logical_disks_shared.insert(0, x)
              check = True
      logical_disks_sorted = (logical_disks_nonshared +
                              logical_disks_shared_raid1 +
                              logical_disks_shared)
      return logical_disks_sorted