Skip to content

Instantly share code, notes, and snippets.

@rg3915
Last active September 13, 2018 04:25
Show Gist options
  • Save rg3915/314b1d392c19e395e9ea0755ee3415ae to your computer and use it in GitHub Desktop.
Save rg3915/314b1d392c19e395e9ea0755ee3415ae to your computer and use it in GitHub Desktop.
Dada uma lista de ranqueamento, pegar a primeira ocorrência do maior valor depois da barra /.
import unittest
def rank1(ranks):
# by @dunossauro
return max([(index, value) for index, value in ranks if value], key=lambda x: x[1].split('/')[1])
def rank2(ranks):
# by @cassiobotaro
return max(ranks, key=lambda x: int(x[1].split('/')[-1] or 0))
def rank3(ranks):
# by @viniciusfk9
return max(ranks, key=lambda x: x[1].split('/')[-1])
class RankTest(unittest.TestCase):
"""
Dada uma lista de ranqueamento, pegar a primeira ocorrência
do maior valor depois da barra /.
Exemplo: [(0, '1/26'), (1, '2/27'), (2, '3/27')]
Retornar: (1, '2/27')
"""
def test_1_1(self):
ranks1 = [(0, '1/26'), (1, '2/27'), (2, '3/27')]
self.assertEqual(rank1(ranks1), (1, '2/27'))
def test_2_1(self):
ranks2 = [(0, ''), (1, '22/27'), (2, '23/26'), (3, '24/27')]
self.assertEqual(rank1(ranks2), (1, '22/27'))
def test_3_1(self):
ranks3 = [(0, ''), (1, '22/27'), (2, '23/29'), (3, '24/29')]
self.assertEqual(rank1(ranks3), (2, '23/29'))
def test_4_1(self):
ranks4 = [(0, '22/27'), (1, '22/26'), (2, '24/27'), (3, '24/27')]
self.assertEqual(rank1(ranks4), (0, '22/27'))
def test_1_2(self):
ranks1 = [(0, '1/26'), (1, '2/27'), (2, '3/27')]
self.assertEqual(rank2(ranks1), (1, '2/27'))
def test_2_2(self):
ranks2 = [(0, ''), (1, '22/27'), (2, '23/26'), (3, '24/27')]
self.assertEqual(rank2(ranks2), (1, '22/27'))
def test_3_2(self):
ranks3 = [(0, ''), (1, '22/27'), (2, '23/29'), (3, '24/29')]
self.assertEqual(rank2(ranks3), (2, '23/29'))
def test_4_2(self):
ranks4 = [(0, '22/27'), (1, '22/26'), (2, '24/27'), (3, '24/27')]
self.assertEqual(rank2(ranks4), (0, '22/27'))
def test_1_3(self):
ranks1 = [(0, '1/26'), (1, '2/27'), (2, '3/27')]
self.assertEqual(rank3(ranks1), (1, '2/27'))
def test_2_3(self):
ranks2 = [(0, ''), (1, '22/27'), (2, '23/26'), (3, '24/27')]
self.assertEqual(rank3(ranks2), (1, '22/27'))
def test_3_3(self):
ranks3 = [(0, ''), (1, '22/27'), (2, '23/29'), (3, '24/29')]
self.assertEqual(rank3(ranks3), (2, '23/29'))
def test_4_3(self):
ranks4 = [(0, '22/27'), (1, '22/26'), (2, '24/27'), (3, '24/27')]
self.assertEqual(rank3(ranks4), (0, '22/27'))
if __name__ == '__main__':
unittest.main()
@rg3915
Copy link
Author

rg3915 commented Sep 13, 2018

Ou, em Django

ranks = list(snpeffs.values('pk', 'snpeff_rank'))
>>> [{'pk': 2828, 'snpeff_rank': ''},
     {'pk': 2829, 'snpeff_rank': '22/27'},
     {'pk': 2830, 'snpeff_rank': '22/26'},
     {'pk': 2831, 'snpeff_rank': '24/27'},
     {'pk': 2832, 'snpeff_rank': '24/24'}]
max(ranks, key= lambda x: x['snpeff_rank'].split('/')[-1])
>>> {'pk': 2829, 'snpeff_rank': '22/27'}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment