- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
for item in listOfModels:
if item[0] in perms:
perms[item[0]][item[1]] = True
else:
perms[item[0]] = {item[1]: True}
我经常使用这样的代码。请告诉我漂亮、简短、正确的方法。
(库、书籍、示例等)
例如我有
[
['animal', 'rabbit'],
['animal', 'cow'],
['plant', 'tree'],
['animal', 'elephant'],
['fruit', 'strawberry'],
['fruit', 'apple'],
]
需要
{
'animal': ['rabbit', 'cow', 'elephant'],
'plant': ['tree'],
'fruit': ['strawberry', 'apple'],
}
或
{
'animal': {
'rabbit': True,
'cow': True,
'elephant': True
},
'plant': {
'tree': True
},
'fruit': {
'strawberry': True,
'apple': True
},
最佳答案
两个选项:使用dict.setdefault()
或使用 collections.defaultdict()
object .
使用dict.setdefault()
:
for category, name in listOfModels:
perms.setdefault(category, {})[name] = True
或使用defaultdict
:
from collection import defaultdict
perms = defaultdict(dict)
for category, name in listOfModels:
perms[category][name] = True
dict.setdefault()
为您查找键,如果缺少键,则使用第二个参数设置值。这样你总是得到一本字典(即使是空的),然后你可以在上面设置name
键。
defaultdict
采用工厂参数,每次您尝试访问的键丢失时,都会调用工厂来生成默认值。因此访问 perms['missing_key']
与使用 perms.set_default('missing_key', default)
具有相同的效果;根据需要产生新的值(value)。
这两种方法都适用于生成列表或集合,而不是生成具有 True
值的字典:
# producing a list
for category, name in listOfModels:
perms.setdefault(category, []).append(name)
# or a set
for category, name in listOfModels:
perms.setdefault(category, set()).append(name)
# same with defaultdict
perms = defaultdict(list)
for category, name in listOfModels:
perms[category].append(name)
perms = defaultdict(set)
for category, name in listOfModels:
perms[category].add(name)
集合可能是这里的最佳选择,它直接等同于值设置为 True
的字典。
关于Python语法。美丽,正确,简短的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32780930/
void main(){ char c; unsigned char uc; unsigned short us1, us2; short s1, s2; c
我要删除 wordpress html 格式在 woocommerce 产品简短描述中。添加 电话 到处标记。我知道如何在 wp 帖子和页面中做到这一点 remove_filter( 'the_exc
我通常会打开一个命令的联机帮助页,该命令已经知道我正在搜索的选项并阅读其描述。有时只需搜索该选项即可立即生效,有时该选项在其他地方被引用,有时该选项仅作为子字符串出现在前面的文本中。 作为一个具体的例
假设我们有一个编号的圆圈。我们想从 A 点到 B 点,但不知道应该向左还是向右。你会如何使用数字来计算你应该朝哪个方向前进? 示例: 我们目前在 1。我们想继续 5。我可以直观地看到 5 更近,所以我
我正在使用以下内容将产品名称和价格添加到悬停框。 在 functions.php 中 // Alter produt loop individual products add_action( 'woo
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我有一个for循环 for ($x=1; $x<=5; $x++){ ($x == 3)? continue : true; //some code here } 现在执行时出现错误
我刚刚开始我的第一个 Java Swing 项目(之前主要做基于 Web 的应用程序),并尝试了解如何构建一个适当的架构,并在 MVC 组件之间分离关注点。 我发现的几乎所有文档都非常深入地介绍了每个
我是一名优秀的程序员,十分优秀!