![](/img/trans.png)
[英]What is the most elegant way to check if string is not part of two lists?
[英]What is the most elegant way to create a dictionary with the value as lists?
所以我有类似的东西
retval = {}
# ...
# some code here to fetch data
# ...
for row in cursor.fetchall():
if row.someid not in retval:
retval[row.someid] = [dict(zip(columns,rows))]
else:
retval[row.someid].append(dict(zip(columns,rows))
产量:
retval = {
1: [{'someid': 1, 'samplefield': 'valueX', ... },
{'someid': 1, 'samplefield': 'valueY', ... }],
2: [{'someid': 2, 'samplefield': 'valueX', ... }]
}
我觉得有更多的pythonic方式来达到我需要的结果。
确切地说,有没有办法减少这些代码行:
if row.someid not in retval:
retval[row.someid] = [dict(zip(columns,rows))]
else:
retval[row.someid].append(dict(zip(columns,rows))
单线?
答:一直都在文档中 ! 感谢Christian Ternus和chthonicdaemon将我指向了正确的方向。 我更新了这个原因,我发现根据文档可以有多种方法。
from collections import defaultdict
retval = defaultdict(list) ## Or retval = defaultdict(lambda: []) based on my accepted answer.
# ...
# some code here to fetch data
# ...
for row in cursor.fetchall():
retval[row.someid].append(dict(zip(columns,rows))
要么
retval = {}
# ...
# some code here to fetch data
# ...
for row in cursor.fetchall():
retval.setdefault(row.someid, []).append(dict(zip(columns,rows))
希望这对你有所帮助!
尝试使用内置collections
模块中的defaultdict
:
from collections import defaultdict
retval = defaultdict(lambda: [])
# ...
# some code here to fetch data
# ...
for row in cursor.fetchall():
retval[row.someid].append(dict(zip(columns,rows))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.