小编cli*_*ick的帖子

使用其构造函数初始化OrderedDict以便保留初始数据顺序的正确方法?

初始化有序字典(OD)以保持初始数据顺序的正确方法是什么?

from collections import OrderedDict

# Obviously wrong because regular dict loses order
d = OrderedDict({'b':2, 'a':1}) 

# An OD is represented by a list of tuples, so would this work?
d = OrderedDict([('b',2), ('a', 1)])

# What about using a list comprehension, will 'd' preserve the order of 'l'
l = ['b', 'a', 'c', 'aa']
d = OrderedDict([(i,i) for i in l])
Run Code Online (Sandbox Code Playgroud)

题:

  • 将一个OrderedDict保存的元组的列表的顺序,或元组或列表或列表等的列表的元组的元组通过在初始化的时间(2楼和3上面的例子)?

  • 如何验证是否OrderedDict实际维护订单?由于a dict具有不可预测的顺序,如果我的测试向量幸运地具有与dict的不可预测顺序相同的初始顺序,该怎么办?例如,如果不是d = OrderedDict({'b':2, 'a':1})我写d = OrderedDict({'a':1, …

python sorting dictionary ordereddictionary

109
推荐指数
2
解决办法
7万
查看次数

Python字符串格式:何时使用!s转换标志

Python中这两个字符串格式语句之间的区别是什么:

'{0}'.format(a)
'{0!s}'.format(a)
Run Code Online (Sandbox Code Playgroud)

如果a是整数,列表或字典,则两者都具有相同的输出.是第一个{0}进行隐式str()调用的人吗?

资源

PS:关键字:感叹号/爆炸"!s"格式化

python string string-formatting

14
推荐指数
2
解决办法
3590
查看次数

从多个表中获取外键的数量

我有3个表,表B和C通过外键引用表A. 我想在PostgreSQL中编写一个查询来获取A中的所有ID以及它们在B&C中的总出现次数.

   a      |     b      |     c
-----------------------------------    
id | txt  |  id | a_id |  id | a_id  
---+----  |  ---+----- |  ---+------ 
1  |  a   |  1  |  1   |  1  |  3    
2  |  b   |  2  |  1   |  2  |  4    
3  |  c   |  3  |  3   |  3  |  4    
4  |  d   |  4  |  4   |  4  |  4    
Run Code Online (Sandbox Code Playgroud)

所需输出(只是A中的id和B&C中的总数):

id | Count
---+-------  
1  |  2      -- twice in B …
Run Code Online (Sandbox Code Playgroud)

sql postgresql aggregate-functions left-join correlated-subquery

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

以编程方式构建SQL查询的强大方法

我不得不求助于ORM不足的原始SQL(使用Django 1.7).问题是大多数查询最终都有80-90%的相似性.在不违反可重用性的情况下,我无法找到构建查询的强大而安全的方法.

字符串连接是唯一的出路,即使用if-else条件构建无参数查询字符串,然后使用预准备语句安全地包含参数(以避免SQL注入).我想按照一种简单的方法来为我的项目模板化SQL,而不是重新发明一个迷你ORM.

例如,考虑以下查询:

SELECT id, name, team, rank_score
FROM
  ( SELECT id, name, team
    ROW_NUMBER() OVER (PARTITION BY team
                       ORDER BY count_score DESC) AS rank_score
    FROM 
      (SELECT id, name, team
       COUNT(score) AS count_score
       FROM people
       INNER JOIN scores on (scores.people_id = people.id)
       GROUP BY id, name, team
      ) AS count_table
  ) AS rank_table
WHERE rank_score < 3
Run Code Online (Sandbox Code Playgroud)

我怎么能够:

a)添加可选WHERE约束people
b)更改INNER JOINLEFT OUTER
c)更改COUNTSUM
d)完全跳过该OVER …

sql postgresql orm dynamic-sql plpgsql

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