[英]Converting a string value of a dictionary inside another dictionary into int value
我正在使用 PulP 來解決線性規划問題。 我在目標 function 中遇到以下錯誤:
TypeError: list indices must be integers or slices, not str
我的目標 function 是
prob += lpSum([routes_vars][man][pa]*costs_distance[man][pa] for (man,pa) in routes)
根據錯誤消息,我認為我的問題是具有字符串值的 cost_distance 字典
costs_distance = {'201': {'10267': '167724.1407', '10272': '151859.5908', '10275': '150131.7254', '10277': '153266.1819', '10279': '147949.5275', '10281': '145429.9767', '10283': '144757.2507', '10286': '166474.849', '10288': '152733.6419'}, '2595': {'10267': '186216.5193', '10272': '170351.9694', '10275': '168624.1039', '10277': '171758.5604', '10279': '166441.906', '10281': '163922.3553', '10283': '163249.6293', '10286': '186363.4807', '10288': '171226.0204'},
如何僅將字典字符串值('167724.1407'、'151859.5908'、'150131.7254'...)轉換為 int 值?
您的問題與costs_distance
字典無關(否則錯誤消息不會提及list
)。 就是這部分:
[routes_vars][man][pa]
我不確定你期望它返回什么,但它首先用單個元素 ( routes_vars
) 構造一個列表,然后嘗試使用[man]
對其進行切片,這沒有任何意義。
如果確定您的意思是將字典值轉換為float
而不是int
list1 = costs_distance['201'].values()
list2 = list(map(float, list1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.