目前有一份list
listData = [{'ProductNo': 'P00001'},
{'ProductNo': 'P00002'},
{'ProductNo': 'P00003'},
{'ProductNo': 'P00004'},
{'ProductNo': 'P00005'}]
想要分別取出P00001、P00002、P00003...
通常我會這樣取值
一筆
print(listData[0]['ProductNo']) // P00001
多筆
for i in listData:
print(listData[i]['ProductNo'])
// list indices must be integers or slices, not dict
但發現會報list indices must be integers or slices, not dict的錯誤
那其實就是我們在進行list的索引的時候也就是我們程式碼中的i,是dictionary的關係
print print看就知道了!
for i in listData:
print(i)
// {'ProductNo': 'P00001'}
{'ProductNo': 'P00002'}
{'ProductNo': 'P00003'}
{'ProductNo': 'P00004'}
{'ProductNo': 'P00005'}
所以正確使用迴圈的方式取出dict中的值是這樣
for i in listData:
print(i['ProductNo'])
// P00001
P00002
P00003
...
listData = [{'ProductNo': 'P00001'},
{'ProductNo': 'P00002'},
{'ProductNo': 'P00003'},
{'ProductNo': 'P00004'},
{'ProductNo': 'P00005'}]
for elem in listData:
print(f'元素:{elem}, 元素型態:{type(elem)}')
print()
for idx, elem in enumerate(listData):
print(f'{idx} -> {elem}')
print()
for elem in listData:
print(elem['ProductNo'])
元素:{'ProductNo': 'P00001'}, 元素型態:<class 'dict'>
元素:{'ProductNo': 'P00002'}, 元素型態:<class 'dict'>
元素:{'ProductNo': 'P00003'}, 元素型態:<class 'dict'>
元素:{'ProductNo': 'P00004'}, 元素型態:<class 'dict'>
元素:{'ProductNo': 'P00005'}, 元素型態:<class 'dict'>
0 -> {'ProductNo': 'P00001'}
1 -> {'ProductNo': 'P00002'}
2 -> {'ProductNo': 'P00003'}
3 -> {'ProductNo': 'P00004'}
4 -> {'ProductNo': 'P00005'}
P00001
P00002
P00003
P00004
P00005
你觀察一下上面的執行結果.
至於你的寫法,確定真的沒問題嗎? 你是用幾版的Python?
不好意思,沒檢查到錯誤,已修正,感謝。
另外,我用的是3.7.4的版本!