我将以下内容编码为打印字典<div [formGroup]="formGroupz">
<div class="tab-pane">
<!--<button (click)="addiffields()">addIf</button>-->
<div class="panel panel-default m-b-10 m-t-0">
<div class="panel-heading" style="padding: 5px 8px;background-color: #e1f5fe;">
<span>if</span>
<span (click)="addiffields()" class="material-icons pull-right icon-panel">add_circle</span>
</div>
<div class="panel-body p-t-0 p-b-0" formArrayName="main">
<div *ngFor="let maingroup of formGroupz.controls.main.controls; let i =index">
<div [formGroupName]="i">
<div *ngFor="let ifgroup of formGroupz.controls.ifgroup.controls; let i =index">
<div [formGroupName]="i">
<input type="text" formControlName="conditionfields">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default m-b-10 m-t-0">
<div class="panel-heading" style="padding: 5px 8px;background-color: #e1f5fe;">
<span>True</span>
<span (click)="addtruefields()" class="material-icons pull-right icon-panel">add_circle</span>
</div>
<div class="panel-body p-t-0 p-b-0" formArrayName="main">
<div *ngFor="let maingroup of formGroupz.controls.main.controls; let i =index">
<div [formGroupName]="i">
<div *ngFor="let trgrp of formGroupz.controls.truegrp.controls; let i =index">
<div [formGroupName]="i">
<input type="text" formControlName="conditionfields">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default m-b-10 m-t-0">
<div class="panel-heading" style="padding: 5px 8px;background-color: #e1f5fe;">
<span>false</span>
<span (click)="addfalsefields()" class="material-icons pull-right icon-panel">add_circle</span>
</div>
<div class="panel-body p-t-0 p-b-0" formArrayName="main">
<div *ngFor="let maingroup of formGroupz.controls.main.controls; let i =index">
<div [formGroupName]="i">
<div *ngFor="let flgrp of formGroupz.controls.falsegrp.controls; let i =index">
<div [formGroupName]="i">
<input type="text" formControlName="falsefields">
</div>
</div>
</div>
</div>
</div>
</div>
{{formGroupz.value | json}}
</div>
</div>
。但错误出来了。任何人都可以回答为什么这样吗?
('one' : 1, 'tow' : 2, 'three' : 3)
答案 0 :(得分:2)
length = {}
class_one = [1, 2, 3]
class_two = ['one', 'two', 'three']
for c1, c2 in zip(class_one, class_two):
if c1 < 4:
length[c2] = c1
print(length)
这里,它为您提供所需的输出。基本上,您正在迭代class_one
,然后尝试使用整个class_two
作为length
的关键字。在这里,您迭代两个数组并使用值作为键
答案 1 :(得分:2)
以下是您的代码的更正版本:
length = {}
class_one = [1, 2, 3]
class_two = ['one', 'two', 'three']
for i, x in enumerate(class_two):
length[x] = class_one[i]
print(length)
您的版本存在以下问题:
length dict
(您使用的[]
用于list
s;请改用{}
。)dict
:使用整个list
作为key
,这是错误的,因为list
s不可用,而不是您想要做的事情。 或简单而且更优雅:
length = dict(zip(class_two, class_one))
这是最好的方法在您的情况下(无视条件)。
他们print
:{'one' : 1, 'two' : 2, 'three' : 3}
最后,您可以使用 dict comprehension 版本,如下所示:
length = {k: v for k, v in zip(class_two, class_one)}
可以想到的其他变体。请注意,这是矫枉过正。
条件
就条件而言if x < 4:
不确定为什么你有那个,因为在目前的例子输入提供它没有意义,但如果你确实需要它,它很容易重新实现。
作为一个示例,看看如下:
length = {k: class_one[i] for i, k in enumerate(class_two) if class_one[i] < 4}
或更短的:
length = {class_two[i]: v for i, v in enumerate(class_one) if v < 4}
或发烧友(甚至更短):
length = {k: v for k, v in zip(class_two, class_one) if v < 4}