我有这样的嵌套字典:
data = {
"2010":{
'A':2,
'B':3,
'C':5,
'D':-18,
},
"2011":{
'A':1,
'B':2,
'C':3,
'D':1,
},
"2012":{
'A':1,
'B':2,
'C':4,
'D':2
}
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我需要在每年(从2010年到2012年)基于类似密钥对所有值求和.所以我期望的结果应该是这样的:
data = {'A':4,'B':7, 'C':12, 'D':-15}
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的numpy数组形式的矩阵:
myarray = np.array[[0,400,405,411,415,417,418,0]
[0,404,412,419,423,422,422,0]
[0,409,416,421,424,425,425,0]
[0,411,414,417,420,423,426,0]
[0,409,410,410,413,419,424,0]
[0,405,404,404,409,414,419,0]]
Run Code Online (Sandbox Code Playgroud)
还有空字典:
dict = { }
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我想将该数组转换为python字典,其中字典的键是从左上角值(myarray[0][0])计算的序号,直到myarray[5][7]按行交错的右下角值().所以结果将是这样的:
dict = { 1 : 0, 2 : 400, 3: 405, ........, 47 : 419 ,48 : 0 }
Run Code Online (Sandbox Code Playgroud)
有这种情况的解决方案吗?希望得到你的帮助..任何帮助将非常感谢..
假设有两个python列表具有相同的结构,如下所示:
var1 = [{'a':1,'b':2},{'c':2,'d':5,'h':4},{'c':2,'d':5,'e':4}]
var2 = [{'a':3,'b':2},{'c':1,'d':5,'h':4},{'c':5,'d':5,'e':4}]
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我需要结合这两个列表,所以我会得到这个值:
result = [{'a':4,'b':4},{'c':3,'d':10,'h':8},{'c':7,'d':10,'e':8}]
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我的 models.py 中有一个非常简单的模型,如下所示:
class Music(models.Model):
title= models.CharField(
max_length=100
)
description = models.TextField(
null=True,
blank=True
)
def __unicode__(self):
return self.name
class Album(models.Model):
musician= models.CharField(
related_name='musician',
max_length=100
)
music = models.ForeignKey(
Music,
related_name='music'
)
def __unicode__(self):
return self.user.username
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我在 signal.py 中做了一个非常简单的逻辑来检查新字段(新音乐)是否刚刚添加到专辑中。
Album(musician="someone", music=Music.objects.get(title="something")) #pk=1
Album.save()
Run Code Online (Sandbox Code Playgroud)
像这样:
@receiver(post_save, sender=Album)
def add_new_album(sender, instance, **kwargs):
if kwargs.get('created'):
print "new album recently created"
Run Code Online (Sandbox Code Playgroud)
在其他情况下,我想发出一个只有在将现有字段编辑为新字段时才会响应的信号:
edit_album = Album.objects.get(pk=1)
edit_album.music = Music.objects.get(title="something_else")
edit_album.save()
Run Code Online (Sandbox Code Playgroud)
每次我编辑现有字段时,都会触发 post_save 接收器 make add_new_album() 函数的使用。所以我的问题是,在 signal.py 中应该实现的仅响应编辑字段条件的逻辑是什么?
我有两个包含列表数组的字典作为这样的值:
d1 = {'1':[12,32,44,12,34],'2':[21,34,11,65],'3':[44,12,98],'4':[65,71]}
d2 = {'1':[15,11,44,42,14],'2':[11,24,41,65]:'3':[41,22,48]}
Run Code Online (Sandbox Code Playgroud)
如何根据相似的键将两个字典合并到一个字典中,所以答案如下:
d3 = {'1':[12,32,44,12,34,15,11,44,42,14],'2':[21,34,11,65,11,24,41,65],'3':[44,12,98,41,22,48],'4':[65,71]}
Run Code Online (Sandbox Code Playgroud) 我的问题很简单.我有一个像这样的python简单代码:
for i in range(1,1193616,1) :
print i
Run Code Online (Sandbox Code Playgroud)
因此,将打印范围1中的所有数字,直到1193616,这个循环进度需要很长时间..如何使其快速?
编辑:
实际上,我尝试为图像数据(Raster)制作一个A-star寻路程序.到目前为止,这是我的A-star函数脚本:
def A_star(h,c,dx,dy,u,s_id,e_id,Op,Cl,Prt,CC,o,ht,w):
Op.append(s_id)
while e_id not in Op :
if Op == [ ] :
break
candidate = { }
for i in Op :
d = {i : CC[i]}
candidate.update(d)
o = min(candidate, key=candidate.get)
Cl.append(o)
Op.remove(o)
adjacent_list = adjacent_cell(o,dx,dy )
for p in adjacent_list :
if p in Cl:
adjacent_list = filter(lambda i: i != p, adjacent_list)
elif p not in Op :
Op.append(p)
d = {p : …Run Code Online (Sandbox Code Playgroud) python ×6
dictionary ×4
list ×2
arrays ×1
django ×1
loops ×1
numpy ×1
optimization ×1
signals ×1