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

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

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

ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 9772
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

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

โพสต์โดย thatsawan » 27/08/2017 3:28 pm

โค้ด: เลือกทั้งหมด

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
ผลที่ได้

โค้ด: เลือกทั้งหมด

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



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

โค้ด: เลือกทั้งหมด

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




ผลที่ได้

โค้ด: เลือกทั้งหมด

{'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]

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 16789
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

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

โพสต์โดย mindphp » 27/08/2017 6:55 pm

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

โค้ด: เลือกทั้งหมด

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
หมวดแชร์ความรู้: viewforum.php?f=29
รับอบรม และพัฒนาระบบ: viewtopic.php?f=6&t=2042

ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 9772
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

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

โพสต์โดย thatsawan » 27/08/2017 9:36 pm

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

โค้ด: เลือกทั้งหมด

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 ได้ตัวสุดท้ายตลอดเลยคะ

โค้ด: เลือกทั้งหมด

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}}
ประมานนี้เเบบนี้อ่าค่ะ

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 16789
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

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

โพสต์โดย mindphp » 27/08/2017 9:45 pm

โค้ด: เลือกทั้งหมด

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
หมวดแชร์ความรู้: viewforum.php?f=29
รับอบรม และพัฒนาระบบ: viewtopic.php?f=6&t=2042

ภาพประจำตัวสมาชิก
thatsawan
PHP VIP Members
PHP VIP Members
โพสต์: 9772
ลงทะเบียนเมื่อ: 31/03/2014 10:02 am
ติดต่อ:

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

โพสต์โดย thatsawan » 27/08/2017 10:16 pm

โค้ด: เลือกทั้งหมด

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 ชั้นเลย


ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 7 และ บุคคลทั่วไป 0 ท่าน