问题描述
我试图从嵌套字典中获取任意值,但出现错误。
我的方法适用于这样的一个级别 dict
:
table = [
{
"A": 157,"B": 221,"C": 330,"D": 380
},{
"A": 510,"B": 547,"C": 660,"D": 780
},{
"A": 791,"B": 1111,"C": 1200,"D": 3000
},]
from operator import itemgetter
val = 525
for dv in table:
column_B = max(val,dv['B'])
if val <= dv['B']:
column_A = (dv['A'])
column_C = dv['C']
pct = dv['D']
break
但是如果我嵌套字典,就会出错。
table = [
"inner":{
{ "A": 157,"D": 380
},{
"A": 510,"D": 780
},{
"A": 791,"D": 3000
},}
]
上面嵌套的字典出现错误。我尝试切片,甚至尝试减少功能,但无法让它发挥作用。我在这里做错了什么?
解决方法
mut self
表示一个列表。 const N: usize = 4;
fn main() {
let bebalken = [[false; N]; N];
let stuetzen = [[true; N]; N];
let mut f = Feld {
abst: [[0; N]; N],bebalken: &bebalken,stuetzen: &stuetzen,balken: [[0; N]; N],};
f.balken_einfugen(0,1,4,1);
f.balken_einfugen(1,1);
}
struct Feld<'a> {
abst: [[u8; N]; N],bebalken: &'a [[bool; N]; N],stuetzen: &'a [[bool; N]; N],balken: [[u8; N]; N],}
impl Feld<'_> {
// `mut self` changed to `&mut self` here
pub fn balken_einfugen<'a>(&mut self,x: usize,y: usize,dir: u8,r: u8,connBar: u8) {
let imax: usize = N;
if dir == 1 {
for i in 0..imax {
self.balken[x + i][y] = connBar;
}
};
}
}
表示字典。看起来您已经将两者部分混淆了。为了使 []
有意义,{}
应该是字典,而 table
应该是列表。
table