我有以下串列
['BILL FROM:', 'TestCorp', 'USA, NY 02123, Washington St.', 'New York, NY, 02123', 'United States', '[email protected]', 'BILL TO:', 'Yao Min', 'LA, 2123, Los Angeles', 'new York, NY, 9803432', 'United States', '[email protected]', 'INVOICE #', '01', 'INVOICE DATE', '2022-08-05', 'AMOUNT DUE', '$36.79', 'SUBTOTAL', '$36.74', 'TAX (0.13%)', '$0.05', 'TOTAL', '$36.79', 'Item', 'Description', 'Quantity', 'Unit Cost', 'Line Total', 'Pen', 'Pen, black coloe', '1.5', '$1.16', '$1.74', 'Book', 'Calculus, Zorych, pt. 1', '3.5', '$10.00', '$35.00', 'Powered by Shopify', 'www.shopify.com']
我正在嘗試將其轉換為字典以獲得如下內容:
{'Bill From:': 'TestCorp',...,'Powered by Shopify': 'www.shopify.com'}
因此,字典中的每個鍵都應該是我串列中的第 i 個元素,每個值 - 串列中的 i 1 個元素。我正在嘗試遍歷該串列,獲取每對元素并將其放入空字典中:
res_dct = {prepared_data[i]: prepared_data[i 1] for i in range(, len(prepared_data))}
但我收到一個錯誤
IndexError: list index out of range
我已經用較小的串列嘗試了這個代碼,它有效!
>>> lst = ['a', 1, 'b', 2, 'c', 3]
>>> res_dct = {lst[i]: lst[i 1] for i in range(0, len(lst), 2)}
>>> res_dct
{'a': 1, 'b': 2, 'c': 3}
那么有什么問題呢?如果有人有任何想法,請幫我弄清楚。謝謝!
uj5u.com熱心網友回復:
你可以用zip,
dict(zip(lst[::2], lst[1::2]))
使用islice,
from itertools import islice
dict(zip(islice(lst, 0, None, 2), islice(lst, 1, None, 2)))
uj5u.com熱心網友回復:
我認為您的代碼對于具有偶數個元素的串列是正確的,因此可以將它們轉換為字典;但是當它是具有奇數個元素的串列時會出現錯誤,因為元素是單獨的并且不能配對以形成鍵值對,所以無法將其轉換為 dict 。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/521668.html
標籤:Python列表字典
