ข้อมูลที่ใส่ใน Dictionnary สลับตำแหน่ง

กำหนดค่าให้ตัวแปร dic เป็นตัวแปรประเภท dictionary คือ

dic = {'BARCODE':'8853748733700','PRICE':'200.00','NAME':'NB-99','REMARK':'.','CURRENCY':'Baht','NUMLINE':'6'}

แต่ เมื่อสั่ง print dic ค่าที่แสดงออกมามันสลับที่กัน เป็น
{'REMARK': '.', 'NAME': 'NB-99', 'NUMLINE': '6', 'PRICE': '200.00', 'BARCODE': '8853748733700', 'CURRENCY': 'Baht'}

รบกวนช่วยแนะนำด้วยนะคะ
ขอบคุณค่ะ

ข้อมูลแบบ dictionar มันจะจำแค่ว่า Key อะไรตรงกับ value อะไรเท่านั้นครับ ไม่มีการจำตำแหน่ง order อะไรทั้งนั้น กรณีนี้คุณต้องสั่ง print แต่ละ key เอาเองคับ :) แต่ก็มีวิธีง่ายอีกวิธีนึงครับ หลังจากสร้าง dic ไปแล้ว ก็สร้าง list เก็บเฉพาะชื่อ key แล้วไป print ใน loop for เอาครับ

ประมาณนี้อ่ะครับ (กลัวว่าจะเอามะพร้าวมาขายสวนจัง :P )

.# หลังจากสร้าง dictionary แล้ว ก็สร้าง list เก็บ key ตาม order ที่ต้องการเลยครับ

dickey = ['BARCODE', 'PRICE', 'NAME', 'REMARK', 'CURRENCY', 'NUMLINE']

for key in dickey:
....print '%s: %s' %(key, dic[key])

แต่ว่ามัน print เป็นคนละบรรทัดนะครับ ลองหาวิธีให้เป็นบรรทัดเดียวกันอยู่ :P

ผิดถูกอย่างไรขอผู้รู้ท่านอื่นๆชี้แนะด้วยนะครับ

sugree's picture

ใส่ , ตามหลัว

dickey = ['BARCODE', 'PRICE', 'NAME', 'REMARK', 'CURRENCY', 'NUMLINE']
 
for key in dickey:
....print '%s: %s' %(key, dic[key]),

จะทำให้ส่วนที่เป็น program coding แสดงเป็นสีแบบนี้ยังงัยอ่ะครับ

khao_lek's picture

ใส่

<code ="python">

</code>

หรือดูรูปแบบจาก Input format ด้านล่างนะครับ

veer's picture

ผมทำ tutorial ไว้ที่ http://blog.vee-u.com/2008/02/17/blockcode/

ลองทำตามที่แนะนำแล้วค่ะ สามารถทำกับ code ด้านบนได้ แต่ไม่สามารถใช้กับ code ด้านล่างนี้ได้ค่ะ ช่วยแนะนำด้วยนะคะ ขอบคุณคะ

text = ''
dict1 = {"Barcode":"<STX><ESC>E2<CAN><ETX>\n\n<STX><ESC>F \"Barcode\" <DEL>%s<ETX>\n",
"Price":"<STX><ESC>F \"Price\"<DEL>%s<ETX>\n",
"Remark":"<STX><ESC>F \"Remark\"<DEL>%s<ETX>\n",
"Product":"<STX><ESC>F \"Product\"<DEL>%s<ETX>\n",
"Currency":"<STX><ESC>F \"Currency\"<DEL>%s<ETX>\n",
"Qty":"<STX><RS>%s<ETB><ETX>\n\n"}
 
d1 = {"Barcode":'8853748733700',"Price":'200.00',"Remark":'.',"Product":'NB-99',"Currency":'Baht',"Qty":'6'}
 
d2 = {"Barcode":'8853748733158',"Price":'150.00',"Remark":'.',"Product":'NBS-200',"Currency":'Baht',"Qty":'4'}
order=["Barcode","Price","Remark","Product","Currency","Qty"]
 
listdict = [d1,d2]
 
b = 0
for x in listdict:
 
        for y in x:
 
                if y in dict1:
 
                        text += dict1[y] % x[y]
 
print  text

loop เกินมาบรรทัดหนึ่ง เอา for y in x: ออก

sugree's picture

ไม่เห็นเอา order มาใช้

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น