簡體   English   中英

將另一個字典中的字典的字符串值轉換為 int 值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM