حل شده

مرتب سازی دیکشنری های موجود در یک فایل

بازدید179.6kپست ها5آخرین فعالیت6 سال پیش
1
2

سلام
فرض کنید یک فایل داریم که در هر خط یک دیکشنری وجود داره که البته خود این دیکشنری ها تو در تو هستن.یعنی داخل هر دیکشنری چند دیکشنری دیگه وجود داره
حالا من میخوام این دیکشنری ها بر اساس کلیدی که من میخوام سورت بشن و به کاربر نمایش داده بشن
هر راهی بود رفتم.به نتیجه نرسیدمشما بگید چی کار کنم؟

فرمت فایلی که میخوام سورت بشه به این شکله :

{
    'data': {
        'id': 1,
        'name': '1',
        'family': '1',
        'field': '1',
        'year': '1'
    },
    'lesson': {
        'les11': {
            'code': '11',
            'score': '1',
            'semester': '1',
            'teacher': '1'
        },
        'les12': {
            'code': '12',
            'score': '22',
            'semester': '22',
            'teacher': '22'
        },
        'les13': {
            'code': '13',
            'score': '33',
            'semester': '33',
            'teacher': '33'
        }
    }
} {
    'data': {
        'id': 3,
        'name': '3',
        'family': '3',
        'field': '3',
        'year': '3'
    },
    'lesson': {
        'les12': {
            'code': '12',
            'score': '3',
            'semester': '3',
            'teacher': '3'
        },
        'les22': {
            'code': '22',
            'score': '33',
            'semester': '33',
            'teacher': '33'
        },
        'les23': {
            'code': '23',
            'score': '33',
            'semester': '33',
            'teacher': '33'
        }
    }
} {
    'data': {
        'id': 2,
        'name': '2',
        'family': '2',
        'field': '2',
        'year': '2'
    },
    'lesson': {
        'les13': {
            'code': '13',
            'score': '2',
            'semester': '2',
            'teacher': '2'
        },
        'les32': {
            'code': '32',
            'score': '22',
            'semester': '22',
            'teacher': '22'
        },
        'les33': {
            'code': '33',
            'score': '33',
            'semester': '33',
            'teacher': '33'
        }
    }
}
آخرین ویرایش: 26-12-2017 ???? 12:16، توسط رضا رمضانپور دلیل: برای خوانا کردن دیکشنری: https://www.cleancss.com/python-beautify/

5 پاسخ

1

سلام. خوش اومدین. چند تا مثال:
چیدمان بر اساس key

mydict = {'carl':40,
          'alan':2,
          'bob':1,
          'danny':3}

for key in sorted(mydict.iterkeys()):
    print "%s: %s" % (key, mydict[key])
alan: 2
bob: 1
carl: 40
danny: 3

چیدمان بر اساس مقدار:

for key, value in sorted(mydict.iteritems(), key=lambda (k,v): (v,k)):
    print "%s: %s" % (key, value)
bob: 1
alan: 2
danny: 3
carl: 40

راه دیگش استفاده از OrderedDict هست.
http://blog.modp.com/2007/11/sorting-python-dict-by-value.html
http://docs.python.org/lib/typesseq-mutable.html#typesseq-mutable
https://docs.python.org/3/library/collections.html#collections.OrderedDict

آخرین ویرایش: 26-12-2017 ???? 12:53، توسط رضا رمضانپور
0
<br> > سلام. خوش اومدین. چند تا مثال: **چیدمان بر اساس key** ``` mydict = {'carl':40,          'alan':2,          'bob':1,          'danny':3} for key in sorted(mydict.iterkeys()):    print "%s: %s" % (key, mydict[key]) ``` ``` alan: 2 bob: 1 carl: 40 danny: 3 ``` **چیدمان بر اساس مقدار:** ``` for key, value in sorted(mydict.iteritems(), key=lambda (k,v): (v,k)):    print "%s: %s" % (key, value) ``` ``` bob: 1 alan: 2 danny: 3 carl: 40 ``` راه دیگش استفاده از OrderedDict هست. http://blog.modp.com/2007/11/sorting-python-dict-by-value.html http://docs.python.org/lib/typesseq-mutable.html#typesseq-mutable https://docs.python.org/3/library/collections.html#collections.OrderedDict <br>

ممنون بخاطر جوابتون
اما این روش ها فقط خط اول رو سورت میکنن
من میخوام کل فایل سورت بشه

1

خواهش میکنم. شما بفرمائید بر چه اساسی میخواین مرتب کنید؟ این رو نگفتید

0
<br> > خواهش میکنم. شما بفرمائید بر چه اساسی میخواین مرتب کنید؟ این رو نگفتید <br>

این فایل به عنوان دیتابیس استفاده میشه
میخوام کاربر بتونه این فایل رو بر اساس کلید های نام یا سال یا رشته، مرتب کنه
یعنی یکی از گزینه هارو انتخاب میکنه،بعد دیکشنری ها بر اون اساس براش سورت و چاپ میشن

0
<br> > این فایل به عنوان دیتابیس استفاده میشه میخوام کاربر بتونه این فایل رو بر اساس کلید های نام یا سال یا رشته، مرتب کنه یعنی یکی از گزینه هارو انتخاب میکنه،بعد دیکشنری ها بر اون اساس براش سورت و چاپ میشن <br> خوب من پیشنهاد میکنم اگر قراره حجم این فایل بیشتر و پیچیده تر بشه حتما از یه سیستم مدیریت دیتابیس مثل PostgreSQL استفاده کنید اینطوری بای شما خیلی راحت تره که بتونید دادهها رو بازخوانی کنید. ___ با روش فعلی برای مرتب سازی level های بعدی میتونید از حلقه ها استفاده کنید

سوال برنامه نویسی دارید؟

ندونستن عیب نیست، نپرسیدن چرا!

خوش آمدید

برای طرح سوال، ایجاد بحث و فعالیت در سایت نیاز است ابتدا وارد حساب کاربری خود شوید. در صورتی که هنوز عضو سایت نیستید میتوانید در عرض تنها چند ثانیه ثبت نام کنید.