it-swarm.dev

Python - كيفية فرز قائمة القوائم حسب العنصر الرابع في كل قائمة؟

أرغب في فرز قائمة القوائم التالية حسب العنصر الرابع (العدد الصحيح) في كل قائمة فردية.

unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]

كيف يمكنني أن أفعل هذا؟ شكرا لكم!

83
Dana Gray
unsorted_list.sort(key=lambda x: x[3])
141
Taymon

استخدم sorted() مع key كما يلي -

>>> unsorted_list = [['a','b','c','5','d'],['e','f','g','3','h'],['i','j','k','4','m']]
>>> sorted(unsorted_list, key = lambda x: int(x[3]))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]

lambda تُرجع العنصر الرابع لكل من القوائم الداخلية وتستخدم الدالة sorted ذلك لفرز تلك القائمة. هذا يفترض أن int(elem) لن تفشل في القائمة.

أو استخدم itemgetter (كما أوضح تعليق Ashwini ، لن تنجح هذه الطريقة إذا كان لديك تمثيل سلسلة للأرقام ، نظرًا لأن من المحتم أن تفشل في مكان ما لأرقام مكونة من رقمين)

>>> from operator import itemgetter
>>> sorted(unsorted_list, key = itemgetter(3))
[['e', 'f', 'g', '3', 'h'], ['i', 'j', 'k', '4', 'm'], ['a', 'b', 'c', '5', 'd']]
42
Sukrit Kalra