关于python字典功能

时间:2017-08-16 07:30:48

标签: python

我将以下内容编码为打印字典<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)

2 个答案:

答案 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}