小编nim*_*wfc的帖子

检查 dict 键以确保所需的键始终存在,并且该 dict 在定义的一组名称之外没有其他键名称

我在 python 中有一个遵循这种通用格式的字典:

{'field': ['$.name'], 'group': 'name', 'function': 'some_function'}
Run Code Online (Sandbox Code Playgroud)

我想对 dict 进行一些预检查,以确保“字段”始终存在,并且除了“组”和“功能”之外没有更多的键存在,这两个都是可选的。

我知道我可以通过使用长而不整洁的 if 语句来做到这一点,但我认为必须有一种更简洁的方法?

这是我目前拥有的:

{'field': ['$.name'], 'group': 'name', 'function': 'some_function'}
Run Code Online (Sandbox Code Playgroud)

本质上,我首先检查“字段”是否存在,因为这是必需的。然后我检查它是否是唯一的键(这很好),或者它是否是“组”旁边的键而没有其他键,或者是“功能”旁边的键而没有其他键,或者是“组”旁边的键和“功能”,没有其他。

是否有一种更整洁的方法来检查提供的密钥是否只有这 3 个密钥,其中两个是可选的?

python dictionary

44
推荐指数
4
解决办法
2341
查看次数

python虚拟环境之间的切换

我有一些新手级别的虚拟环境问题。我已经使用过一些虚拟环境,但仍然有一些问题。

我创建并激活了一个 env,这是我的主要工作环境,如下所示:

virtualenv env
source /path/to/environment/env/bin/activate
Run Code Online (Sandbox Code Playgroud)

激活此功能后,我现在可以看到我处于(env)命令行上可见的环境中。

我的第一个问题是,每次打开终端会话时是否都需要运行 activate 命令?因此每次我打开笔记本电脑时,等等?

此外,我想创建另一个在早期版本的 python 上运行的环境以用于测试目的。我本来打算这样做:

virtualenv --python=python2.7 env-py2
source /path/to/new/environment/env-py2/bin/activate
Run Code Online (Sandbox Code Playgroud)

这些虚拟环境可以轻松切换吗?那么我可以激活env-py2然后轻松跳回env再次激活吗?或者是否需要中间步骤?

对于非常基本的问题表示歉意,但我正在努力寻找高级信息。

python virtualenv

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

更改垫子滑块的颜色

我目前正在学习角度,我遇到了一个我确信很容易解决的问题,但我一直无法找到答案。

我的项目中有以下代码:

<mat-slider step="10" [value]="80" thumbLabel (change)="updateValue($event)" class="selector"></mat-slider>
Run Code Online (Sandbox Code Playgroud)

目前,选择器线和拇指显示为黄色,这似乎是默认颜色。

谁能建议我需要做什么来改变滑块和拇指的颜色?

我已在 scss 文件中尝试了以下操作,但无法进行任何更改:

.mat-slider-thumb {
    border-color: red;
    background-color: blue;
}

.mat-slider {
    border-color: red;
    background-color: green;
}
Run Code Online (Sandbox Code Playgroud)

上面唯一有效的是将背景颜色更改为绿色,这会更改整个元素的背景颜色。

angular-material angular

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

Postgres jsonb_set 连接当前值

我正在尝试使用 jsonb_set 更新数据库中的一系列 json 对象。我可以使用一个查询来使用字符串值更新对象,但是我似乎无法使用当前值来更新它。

UPDATE entity
SET properties = jsonb_set(properties, '{c_number}', concat('0', properties->>'c_number'))
WHERE type = 1 and length(properties->>'c_number') = 7
Run Code Online (Sandbox Code Playgroud)

上面的内容在当前格式下不起作用,我认为问题出在properties->>'c_number'jsonb_set 内部。有没有办法可以访问当前值并简单地添加前导 0?

postgresql jsonb

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

检查字典值是否包含列表项

我有一个字典,它有一个键(一个两位数的前缀)和一个值(一个字符串列表)。它看起来像这样:

prefixes = {
    "AC" : ["england-wales"],
    "OC" : ["england-wales", "wales"],
    "SC" : ["scotland"],
    "NC" : ["northern-ireland"]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个前缀列表,其中的值包含列表中提供的区域。

通过的区域可以是一个或多个区域,例如:

regions = ['england-wales', 'wales']
Run Code Online (Sandbox Code Playgroud)

因此,上述数据我想创建一个新的列表名为前缀,它将包含所有的前缀,其中无论是“威尔士”或“英格兰威尔士”包含在值:

prefix_list = ['AC', 'OC']
Run Code Online (Sandbox Code Playgroud)

而如果 region 刚好等于 'wales' 那么:

prefix_list = ['OC']
Run Code Online (Sandbox Code Playgroud)

我玩了一些东西,让这个凌乱的解决方案起作用:

combo_list = []
prefix_list = []

for r in regions:
    combo_list.append([k for k, v in prefixes.items() if r in v])

for sublist in combo_list:
    for i in sublist:
        prefix_list.append(i)

prefix_list = sorted(set(prefix_list)) #This will remove duplicates for me
Run Code Online (Sandbox Code Playgroud)

我认为必须有一种更好、更“清洁”的方式来做到这一点,但无法完全弄清楚。任何帮助表示赞赏。

python dictionary for-loop list-comprehension list

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

无论顺序如何,两列的唯一约束

我有一个非常简单的表:

    id  | name   | alternate
--------+--------+------------
     1  |   Joe  |     Joseph
--------+--------+------------
     2  |   Pete |     Peter
--------+--------+------------
Run Code Online (Sandbox Code Playgroud)

等等。

我想在名称和备用列上添加约束,但与顺序无关。例如,我不希望能够插入(3, 'Peter', 'Pete'),因为它本质上与 id 2 相同,只是列颠倒了。

有没有办法做到这一点?

sql postgresql create-table unique-constraint

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

将对象附加到列表

我有一些将结果对象附加到列表的 python 代码。

objs = []
objs.append(results['Contents'])
Run Code Online (Sandbox Code Playgroud)

如果我打印results['Contents'],它看起来像这样:

[
   {
      "id": 1,
      "name", "joe"
   },
   {
      "id": 2,
      "name", "jane"
   },
   {
      "id": 3,
      "name", "john"
   }
]
Run Code Online (Sandbox Code Playgroud)

但是,当我打印时objs,它看起来像这样 - 正如您所看到的,它现在是列表中的一个列表:

[
   [
      {
         "id": 1,
         "name", "joe"
      },
      {
         "id": 2,
         "name", "jane"
      },
      {
         "id": 3,
         "name", "john"
      }
   ]
]
Run Code Online (Sandbox Code Playgroud)

这开始给我带来问题,因为我开始循环并附加更多对象(结构类似于results['Contents']),如下所示:

objs.append(l_objs['Contents'])
Run Code Online (Sandbox Code Playgroud)

当我最终得到这样的结果时:

[
   [
      {
         "id": 1,
         "name", "joe"
      },
      {
         "id": 2,
         "name", "jane"
      },
      {
         "id": 3,
         "name", …
Run Code Online (Sandbox Code Playgroud)

python

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