สอบถามการเรียงข้อมูลใน loop list ซ้อน list พอยัดค่าใส่ dict มันเรียงไม่ถูกค่ะ

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderators: mindphp, ผู้ดูแลกระดาน

User avatar
thatsawan
PHP VIP Members
PHP VIP Members
Posts: 26089
Joined: 31/03/2014 10:02 am
Contact:

สอบถามการเรียงข้อมูลใน loop list ซ้อน list พอยัดค่าใส่ dict มันเรียงไม่ถูกค่ะ

Post by thatsawan »

Code: Select all

categ_data = [197, 152, 154, 153, 196, 151, 201, 163, 145]
item = [11,22,33]

data = {}
for cate in categ_data:
    print cate
    for i in item:
        print i
        data[cate] = i
        
        
print data

print data
ผลที่ได้

Code: Select all

{163: 33, 196: 33, 197: 33, 201: 33, 145: 33, 151: 33, 152: 33, 153: 33, 154: 33}

ลองปรับ key เป็น str เเล้วก็ไม่เรียง

Code: Select all

categ_data = [197, 152, 154, 153, 196, 151, 201, 163, 145]
item = [11,22,33]

data = {}
for cate in categ_data:
    print cate
    c = str(cate)
    for i in item:
        print i
        data[c] = i


print data


ผลที่ได้

Code: Select all

{'151': 33, '201': 33, '153': 33, '152': 33, '154': 33, '197': 33, '196': 33, '145': 33, '163': 33}
ก่อนยัดค่า ลองปริ้นค่าดูก็ทำงานถูกค่ะ key ปริ้นเรียงลำดับของ loop เเต่พอยัดค่าลงอีกตัวแปล ก็จะผิดค่ะ


ผลที่ต้องการ อยากให้ key เรียงตาม categ_data = [197, 152, 154, 153, 196, 151, 201, 163, 145]

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 25176
Joined: 22/09/2008 6:18 pm
Contact:

Re: สอบถามการเรียงข้อมูลใน loop list ซ้อน list พอยัดค่าใส่ dict มันเรียงไม่ถูกค่ะ

Post by mindphp »

import โมดูล collections เข้ามาใช้ และประการตัวแปด้วย collections.OrderedDict()

Code: Select all

import collections
categ_data = [197, 152, 154, 153, 196, 151, 201, 163, 145]
item = [11,22,33]

data = collections.OrderedDict()
for cate in categ_data:
    #print cate
    #c = str(cate)
    c = cate
    data[c] = 3 # range(1,9)

print data
ผลที่ได้
OrderedDict([(197, 3), (152, 3), (154, 3), (153, 3), (196, 3), (151, 3), (201, 3), (163, 3), (145, 3)])
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
thatsawan
PHP VIP Members
PHP VIP Members
Posts: 26089
Joined: 31/03/2014 10:02 am
Contact:

Re: สอบถามการเรียงข้อมูลใน loop list ซ้อน list พอยัดค่าใส่ dict มันเรียงไม่ถูกค่ะ

Post by thatsawan »

ลองมา ใส่ 2 loop ซ้อนกัน

Code: Select all

categ_data = [197, 152, 154, 153, 196, 151, 201, 163, 145]
item = [11,22,33]

data = collections.OrderedDict()
for cate in categ_data:
    for i in item:
        
        #c= str(cate)
        c = cate
        data[c] = i # range(1,9)

print data
ผลที่ได้คือ loop ของค่า item ได้ตัวสุดท้ายตลอดเลยคะ

Code: Select all

OrderedDict([(197, 33), (152, 33), (154, 33), (153, 33), (196, 33), (151, 33), (201, 33), (163, 33), (145, 33)])
จะทำยังไงให้มัน
เก็บ

{197 : {11,22,33} , 152 :{11,22,33}}
ประมานนี้เเบบนี้อ่าค่ะ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 25176
Joined: 22/09/2008 6:18 pm
Contact:

Re: สอบถามการเรียงข้อมูลใน loop list ซ้อน list พอยัดค่าใส่ dict มันเรียงไม่ถูกค่ะ

Post by mindphp »

Code: Select all

import collections
categ_data = [197, 152, 154, 153, 196, 151, 201, 163, 145]
item = [11,22,33]

data = collections.OrderedDict()
for cate in categ_data:
    #print cate
    #c = str(cate)
    c = cate
    data[c] = item

print data
ผลที่ได้
OrderedDict([(197, [11, 22, 33]), (152, [11, 22, 33]), (154, [11, 22, 33]), (153, [11, 22, 33]), (196, [11, 22, 33]), (151, [11, 22, 33]), (201, [11, 22, 33]), (163, [11, 22, 33]), (145, [11, 22, 33])])
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

User avatar
thatsawan
PHP VIP Members
PHP VIP Members
Posts: 26089
Joined: 31/03/2014 10:02 am
Contact:

Re: สอบถามการเรียงข้อมูลใน loop list ซ้อน list พอยัดค่าใส่ dict มันเรียงไม่ถูกค่ะ

Post by thatsawan »

Code: Select all

page_data = collections.OrderedDict()
 if parent_id not in page_data:
                        page_data[parent_id] = collections.OrderedDict()
                    page_data[parent_id][line.id] = line
ได้เเล้วค่ะ
ถ้าเรามี 2 ชั้น ต้องเรียง 2 ชั้นเลย

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - C/C++ & java & Python”

Who is online

Users browsing this forum: No registered users and 6 guests