小编Fai*_*rbw的帖子

python中两个嵌套字典内的类似键的值和

我有这样的嵌套字典:

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)

python dictionary

6
推荐指数
1
解决办法
552
查看次数

如何使用顺序键将Numpy数组转换为Python字典?

我有一个像这样的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 arrays dictionary numpy

5
推荐指数
1
解决办法
6914
查看次数

如何将两个包含字典的列表与相似的键组合?

假设有两个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)

我怎样才能做到这一点?

python dictionary list

3
推荐指数
1
解决办法
277
查看次数

Django 发出模型值变化条件信号?

我的 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 中应该实现的仅响应编辑字段条件的逻辑是什么?

python django signals

1
推荐指数
1
解决办法
2661
查看次数

根据键将两个列表合并为字典内的值

我有两个包含列表数组的字典作为这样的值:

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 dictionary list

0
推荐指数
1
解决办法
107
查看次数

如何加速Python中的循环进度?

我的问题很简单.我有一个像这样的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 optimization loops

-1
推荐指数
1
解决办法
372
查看次数

标签 统计

python ×6

dictionary ×4

list ×2

arrays ×1

django ×1

loops ×1

numpy ×1

optimization ×1

signals ×1