我有一个嵌套的initState()
如下:
dict
我得到一个像这样的列表/路径:
d = {'A': [{'B': [{'C': [{'D1':[]}, {'D2': []}]}]}]} # just an example
我想沿着l = ['A','B','C','D1']
中的路径走,以检索相应的dict
值。我写了以下程序:
D1
我想知道是否有更好的方法来实现这一目标。我觉得这种方法有点过于冗长,甚至可能有潜伏的bug。
提前感谢您的回答/建议!
答案 0 :(得分:2)
我使用了递归方法。
l = ['A','B','C','D1']
# xyz
l = ['A','B','C']
# [{'D1': 'xyz'}, {'D2': []}]
l = ['A','B','C','D3']
# None
l = ['A','B','C','D2']
# []
输出:
<AdditionalIncludeDirectories>
..\..\some\dir;
..\another\dir;
...
</AdditionalIncludeDirectories>
答案 1 :(得分:1)
如何走这样的字典:
<div class="card">
<div class="card-body">
<h4 class="card-title">Title</h4>
<!-- Nav tabs -->
<div class="vtabs">
<ul class="nav nav-tabs tabs-vertical" role="tablist">
<li class="nav-item"> <a class="nav-link active show" data-toggle="tab" href="#home0" role="tab" aria-selected="true"><span class="hidden-sm-up"><i class="ti-home"></i></span> <span class="hidden-xs-down">A0</span> </a> </li>
{% for i in range(1,5) %}
<li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#home{{ i }}" role="tab" aria-selected="true"><span class="hidden-sm-up"><i class="ti-home"></i></span> <span class="hidden-xs-down">A{{ i }}</span> </a> </li>
{% endfor %}
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active show" id="home0" role="tabpanel">
0
</div>
{% for i in range(1,5) %}
<div class="tab-pane" id="home{{ i }}" role="tabpanel">
<div class="card">
<div class="card-body p-b-0">
<h4 class="card-title">Form header</h4>
<!-- Nav tabs -->
<ul class="nav nav-tabs customtab2" role="tablist">
<li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#home7" role="tab" aria-selected="false"><span class="hidden-sm-up"><i class="ti-home"></i></span> <span class="hidden-xs-down">Home</span></a> </li>
<li class="nav-item"> <a class="nav-link" data-toggle="tab" href="#profile7" role="tab" aria-selected="false"><span class="hidden-sm-up"><i class="ti-user"></i></span> <span class="hidden-xs-down">Profile</span></a> </li>
<li class="nav-item"> <a class="nav-link active show" data-toggle="tab" href="#messages7" role="tab" aria-selected="true"><span class="hidden-sm-up"><i class="ti-email"></i></span> <span class="hidden-xs-down">Messages</span></a> </li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane" id="home7" role="tabpanel">
<div class="p-20">
<h5>Best Clean Tab ever</h5>
<h6>you can use it with the small code</h6>
<p>Donec pede justo, fringilla vel, aliquet nec, vulputate eget, arcu. In enim justo, rhoncus ut, imperdiet a.</p>
</div>
</div>
<div class="tab-pane p-20" id="profile7" role="tabpanel">2</div>
<div class="tab-pane p-20 active show" id="messages7" role="tabpanel">3</div>
</div>
</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
< /div>
输出:
from copy import deepcopy
def walk_dict(ld, path):
if isinstance(path, str):
path = path.split()
t = deepcopy(ld)
for key in path:
if isinstance(t, list):
try:
t = [d for d in t if key in d][0]
except IndexError:
return
try:
t = t[key]
except KeyError:
return
else:
return t
def main():
d = {'A': [{'B': [{'C': [{'D1':['values of D1']}, {'D2': "I'm D2"}]}]}]}
a = 'A B C D1'
print(walk_dict(d, a))
a = 'A B C D2'
print(walk_dict(d, a))
a = 'A B C D3'
print(walk_dict(d, a))
a = 'A B1 C D3'
print(walk_dict(d, a))
if __name__ == '__main__':
main()
答案 2 :(得分:0)
您可以使用此递归函数:
all cases passed
输出:
#cesiumContainer {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
.toolbar-left {
display: block;
position: absolute;
top: 5px;
left: 5px;
}
以下是当前答案的时间安排。时间和输入设置的源代码可以作为要点here找到。