如何解决在python中评估嵌套字典
我有一本字典,看起来像这样
//@version=4
LOOKBACK = 1000
study("FRACTAL_LINES",shorttitle="FL2",overlay=true,precision=0,max_bars_back=LOOKBACK)
//////////////////////FRACTALS/////////////////////////////////
header_fractals = input(false,title = "====== Fractal Settings ======")
display_fractals = input(false,title="Display Fractal triangles")
fractal_join_line = input(true,title='Display Fractal lines')
extend = input(true,title='Extend fractal lines to current bar if they remain uncrossed')
aggressive = false
price = hl2
// fractal calculation
n = 2
header_fractals4 = input(false,title = "========================")
// Identify FRACTAL TOPS
isBWFractalBullish(mode) => ret = mode == 1 ? ((high[n+2] < high[n]) and (high[n+1] < high[n]) and (high[n-1] < high[n])
and (high[n-2] < high[n])) or ((high[n+3] < high[n]) and (high[n+2] < high[n])
and (high[n+1] == high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))
or ((high[n+4] < high[n]) and (high[n+3] < high[n]) and (high[n+2] == high[n])
and (high[n+1] <= high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))
or ((high[n+5] < high[n]) and (high[n+4] < high[n]) and (high[n+3] == high[n])
and (high[n+2] == high[n]) and (high[n+1] <= high[n]) and (high[n-1] < high[n]) and (high[n-2] < high[n]))
or ((high[n+6] < high[n]) and (high[n+5] < high[n]) and (high[n+4] == high[n])
and (high[n+3] <= high[n]) and (high[n+2] == high[n]) and (high[n+1] <= high[n])
and (high[n-1] < high[n]) and (high[n-2] < high[n])) : false
// Identify FRACTAL BOTTOMS
isBWFractalBearish(mode) => ret = mode == -1 ? ((low[n+2] > low[n]) and (low[n+1] > low[n]) and (low[n-1] > low[n])
and (low[n-2] > low[n]))or ((low[n+3] > low[n]) and (low[n+2] > low[n]) and (low[n+1] == low[n])
and (low[n-1] > low[n]) and (low[n-2] > low[n])) or ((low[n+4] > low[n]) and (low[n+3] > low[n])
and (low[n+2] == low[n]) and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n]))
or ((low[n+5] > low[n]) and (low[n+4] > low[n]) and (low[n+3] == low[n]) and (low[n+2] == low[n])
and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n])) or ((low[n+6] > low[n])
and (low[n+5] > low[n]) and (low[n+4] == low[n]) and (low[n+3] >= low[n]) and (low[n+2] == low[n])
and (low[n+1] >= low[n]) and (low[n-1] > low[n]) and (low[n-2] > low[n])) : false
filteredtopf = isBWFractalBullish(1)
filteredbotf = isBWFractalBearish(-1)
plotshape(filteredtopf and display_fractals,title="Up-Fractal",style=shape.triangleup,location=location.abovebar,offset=-2,color=color.green,transp=0)
plotshape(filteredbotf and display_fractals,title="Down-Fractal",style=shape.triangledown,location=location.belowbar,color=color.red,transp=0)
//// FRACTAL TOPS AND BOTTOMS Plots //////
plot(fractal_join_line ? valuewhen(filteredtopf,high[2],0) : na,title="Fractal Tops",style=plot.style_cross,linewidth=1,color=#b71c1c,transp=0)
plot(fractal_join_line ? valuewhen(filteredbotf,low[2],title="Fractal Bottoms",color=#1b5e20,transp=0)
//// Draw fractal lines if extend option is TRUE
line fractal_top_line = na
line fractal_bottom_line = na
int fractal_top_bar = na
int fractal_bottom_bar = na
yTop = valuewhen(filteredtopf,0)
yBot = valuewhen(filteredbotf,0)
if extend
if filteredtopf
fractal_top_line := line.new(x1=bar_index[2],y1=yTop,x2=bar_index,y2=yTop,color=color.red)
line.set_extend(fractal_top_line,extend.right)
if filteredbotf
fractal_bottom_line := line.new(x1=bar_index[2],y1=yBot,y2=yBot,color=color.green)
line.set_extend(fractal_bottom_line,extend.right)
// Delete fractal lines if price crosses them
// float linePrice = na
// lineCrossed = false
// for i=0 to LOOKBACK
// if not na(fractal_top_bar[i])
// linePrice := line.get_price(fractal_top_line[i],bar_index)
// lineCrossed := (close[i+1] < linePrice and close[i] > linePrice) or (close[i+1] > linePrice and close[i] < linePrice)
// if lineCrossed
// line.delete(fractal_top_line[i])
// if not na(fractal_bottom_bar[i])
// linePrice := line.get_price(fractal_bottom_line[i],bar_index)
// lineCrossed := (close[i+1] < linePrice and close[i] > linePrice) or (close[i+1] > linePrice and close[i] < linePrice)
// if lineCrossed
// line.delete(fractal_bottom_line[i])
我试图从中提取数据,但是我不知道这样做的最佳方法。
result = {
{
"Dogs":{
"original":[
72,15.34386
],"result":[
1,4
]
},"Cats":{
"original":[
24.716667,21.563121
],2,"Lions":{
"original":[
15.761111,15.761111,15.761111
],3,"Bulls":{
"original":[
7.961111,7.055556,44.45,35.644444,17.805556,70.988889,35.527778
],"ivupstream-lix-frontend-0/invisualize LATENCY campaign-manager-web to RESTLI lixFrontendTreatmentsV2 on lix-frontend":{
"original":[
37.386364,28.289394
],"isnake":{
"original":[
18.399561,18.399561,20.361258,18.674232,18.248904
],4
]
}
}
尽管这样,我还是尝试了几种方法。
我想遍历字典并为每组字典键获取>>> for i in result.items():
... print(i['Dogs'])
...
Traceback (most recent call last):
File "<stdin>",line 2,in <module>
TypeError: tuple indices must be integers or slices,not str
和result
。这样做的最Python方式是什么?
解决方法
.items
在每次迭代中返回两个arg,键和值。
for k,v in result.items():
print(k,v)
,
Zaven的答案更加冗长,更接近问题的要求:
for k,v in result.items():
r = v["result"]
o = v["original"]
print(k,r,o)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。