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

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

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

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

โดย บุคคลทั่วไป » 10/05/2021 1:22 am

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)])

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

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])])

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

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)])

สอบถามการเรียงข้อมูลใน 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]

ข้างบน