পাইথন তালিকাটি সাজানো ক্রম অনুসারে


334

আমি কীভাবে এই তালিকাটিকে অবতরণ ক্রমে বাছাই করতে পারি?

timestamp = [
    "2010-04-20 10:07:30",
    "2010-04-20 10:07:38",
    "2010-04-20 10:07:52",
    "2010-04-20 10:08:22",
    "2010-04-20 10:08:22",
    "2010-04-20 10:09:46",
    "2010-04-20 10:10:37",
    "2010-04-20 10:10:58",
    "2010-04-20 10:11:50",
    "2010-04-20 10:12:13",
    "2010-04-20 10:12:13",
    "2010-04-20 10:25:38"
]

উত্তর:


387

এক লাইনে, একটি ব্যবহার করে lambda:

timestamp.sort(key=lambda x: time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6], reverse=True)

এখানে একটি ফাংশন পাস list.sort:

def foo(x):
    return time.strptime(x, '%Y-%m-%d %H:%M:%S')[0:6]

timestamp.sort(key=foo, reverse=True)

13
একটি সময়ের টুপলে রূপান্তর অপ্রয়োজনীয়।
মার্সেলো ক্যান্টোস

2
@ মার্সেলো: কেবল কাকতালীয়ভাবে।
Ignacio Vazquez-Abram

16
@ IgnacioVazquez-Abram No, কাকতালীয়ভাবে নয়। আইএসও 8601 স্পষ্টভাবে ডিজাইন করা হয়েছে যাতে বর্ণানুক্রমিক ক্রম কালানুক্রমিক ক্রমের সাথে মিলে যায়।
jwg

অনুভূতির সঙ্গে @jwg সম্মত (এটা নকশা পরিষ্কারভাবে, তাই না কাকতালীয়), কিন্তু প্রদত্ত বিন্যাস আইএসও 8601. সাথে সামঞ্জস্য নেই
মার্সেলো Cantos

2
@jwg তারিখ এবং সময় উপাদানগুলির মধ্যে একটি স্থান আছে।
মার্সেলো ক্যান্টোস

381

এটি আপনাকে অ্যারের একটি বাছাই করা সংস্করণ দেবে।

sorted(timestamp, reverse=True)

আপনি যদি স্থানটি অনুসারে বাছাই করতে চান:

timestamp.sort(reverse=True)

2
reverse২.৪-এ যুক্ত হয়েছিল তবে নোট করুন যে sort()এটি স্থিতিশীল, সুতরাং প্রদত্ত কোডের দুটি বিট অগত্যা একই ফল দেবে না।
Ignacio Vazquez-Abram

3
@ রাজীব - ভুলে যাবেন না যে তারিখগুলি এইভাবে লেখা থাকলে (YYYY-MM-DD HH: MM: SS), যেখানে বর্ণানুক্রমিকভাবে কালানুক্রমিকভাবে একই হয়। 'DD.MM.YYYY' একটি ভাল উদাহরণ হবে, যেখানে আপনার কেবল প্রয়োজনের চেয়ে বেশি প্রয়োজন sort(reverse=True)
ইউরোমো

মুদ্রণ ("সাজানোর আগে তালিকা"); (myList) মুদ্রণ; myList.sort (বিপরীত = সত্য); মুদ্রণ ("সাজানো তালিকা:" + স্ট্রিং (মাইলিস্ট));
এরম

@ ইরম এটি একটি উত্তর, কোনও মন্তব্য নয় এবং উত্তর হিসাবে এটি নিরর্থক।
মার্সেলো ক্যান্টোস

56

আপনি কেবল এটি করতে পারেন:

timestamp.sort(reverse=True)

10

যেহেতু আপনার তালিকাটি ইতিমধ্যে আরোহী ক্রমে রয়েছে, তাই আমরা কেবল তালিকাটি বিপরীত করতে পারি।

>>> timestamp.reverse()
>>> timestamp
['2010-04-20 10:25:38', 
'2010-04-20 10:12:13', 
'2010-04-20 10:12:13', 
'2010-04-20 10:11:50', 
'2010-04-20 10:10:58', 
'2010-04-20 10:10:37', 
'2010-04-20 10:09:46', 
'2010-04-20 10:08:22',
'2010-04-20 10:08:22', 
'2010-04-20 10:07:52', 
'2010-04-20 10:07:38', 
'2010-04-20 10:07:30']

9

আপনি সহজ টাইপ করুন:

timestamp.sort()
timestamp=timestamp[::-1]

এটি একটি অদ্ভুত উত্তর কারণ আপনি স্থানে বাছাই করেন তবে তারপরে স্থানটি বিপরীত। যদি মূল তালিকাটি পৃথক করে অন্য কোনও পরিবর্তনশীল হয়, তবে এর মানটির পরে তাদের মূল ক্রমে উপাদানগুলি বা উতরিত ক্রমে থাকবে না; উপনামটি আরোহী ক্রম অনুসারে বাছাই করা তালিকার দিকে নির্দেশ করবে । এটি বরং আশ্চর্যজনক হতে পারে এবং সূক্ষ্ম বাগগুলির উত্স।
কেয়া 3

0

এখানে অন্য উপায়


timestamp.sort()
timestamp.reverse()
print(timestamp)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.