我從一個檔案中創建了這本字典。它有一個帶有值串列的鍵。串列中的元素都是字串。我想將索引 1 到 3 處的元素轉換為整數。
這是我字典中的一個鍵:值。
{'Youngstown': ['OH', '4110', '8065', '115436'].....}
我想將“OH”保留為字串并將所有其他元素轉換為整數。
像這樣:
{'Youngstown': ['OH', 4110, 8065, 115436].....}
這是我到目前為止的代碼。
d3 = {}
for k,v in d2.items():
for i in v:
for v in range(1,3):
d3[k] = int(v)
print(d3)
但是,這只給出了以下結果:
{'Youngstown': 2, ...}
這是在python中。
uj5u.com熱心網友回復:
您的問題是您正在d3[k]通過內部回圈覆寫每次的值for(這也v錯誤地覆寫了值)。您需要設定d3[k]為串列,然后將int值附加到它。例如:
for k, v in d2.items():
d3[k] = [v[0]]
for i in range(1, 4):
d3[k].append(int(v[i]))
您還可以考慮使用str.isnumeric()來檢查值并僅在為真時進行轉換。例如:
for k, v in d2.items():
d3[k] = [int(i) if i.isnumeric() else i for i in v]
然后可以將其包裝到嵌套理解中:
d3 = { k : [int(i) if i.isnumeric() else i for i in v] for k, v in d2.items() }
uj5u.com熱心網友回復:
鑒于:
di={'Youngstown': ['OH', '4110', '8065', '115436'],'Columbus':['OH','1','2','3']}
try / except如果可能的話,您可以撰寫一個用于轉換整數的小函式:
def conv(e):
try:
return int(e)
except ValueError:
return e
di={k:[conv(e) for e in v] for k,v in di.items()}
>>> di
{'Youngstown': ['OH', 4110, 8065, 115436], 'Columbus': ['OH', 1, 2, 3]}
uj5u.com熱心網友回復:
要在適當的位置更改串列,您可以分配給串列的一部分。這使得一個可讀的簡單回圈:
d3 = {
'Youngstown': ['OH', '4110', '8065', '115436'],
'Anchorage': ['AK', '5432', '1232', '350492']
}
for l in d3.values():
l[1:] = map(int, l[1:])
在此之后,d3將如下所示:
{'Youngstown': ['OH', 4110, 8065, 115436],
'Anchorage': ['AK', 5432, 1232, 350492]}
如果您不想觸摸索引 3 以外的元素,則可以定義切片的最終邊界:
l[1:4] = map(int, l[1:4])
uj5u.com熱心網友回復:
這應該做你想要的:
d3 = {}
for k,v in d2.items():
d3[k] = [v[0]] [int(n) for n in v[1:]]
對于字典的每個元素,它構造一個新串列,將第一個元素原封不動地復制并應用于int()其余元素。然后它將結果存盤在新的dict.
示例:對于 具有以下值d2:
d2 = {'Youngstown': ['OH', '4110', '8065', '115436'],
'foo': ['x', '10', '20', '30']}
它產生以下內容d3:
{'Youngstown': ['OH', 4110, 8065, 115436], 'foo': ['x', 10, 20, 30]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/465144.html
上一篇:從嵌套字典生成對
下一篇:如何通過處理原始字典來創建新字典
