我正在使用以下示例来检查项目是否在列表中:
var = 'a'
var_list = ('a','b','c')
if var in var_list:
do_something()
但就我而言,我所拥有的是字典和字典列表:
var = {'name': 'John', 'age': 35, 'city': 'Orlando'}
var_list = ( {'name': 'John', 'age': 36, 'city': 'Orlando'} , \
{'name': 'Alex', 'age': 22, 'city': 'New York'} , \
{'name': 'Celes', 'age': 24, 'city': 'Vector'} )
if var['name'] in var_list:
do_something()
我只需要在比较中检查密钥'name',否则如果var in var_list
age
,密钥name
会有所不同,并且会导致不进入if条件。是否可以只比较var data = "[{"one":1}, {"two":2}]";
var result = JSON.parse(data);
console.log(result)
键?
当然,我可以逐项迭代检查,但如果有一个功能或某些东西可以减少执行时间,那就太棒了。
答案 0 :(得分:3)
您可以使用列表理解:
if var['name'] in [d['name'] for d in var_list]:
doSomething()
答案 1 :(得分:2)
一种方法是测试词典列表中的一组名称。
from operator import itemgetter as iget
name_set = set(map(iget('name'), var_list))
if var['name'] in name_set:
do_something()
答案 2 :(得分:1)
您可以使用内置函数chapter on Subsetting来检查是否匹配。它将根据值是否匹配返回布尔值#include <stdio.h>
#include <stdlib.h>
typedef struct{
int a;
}str;
int main(){
int i;
str **str_ptr;
str *str_ptr1;
str_ptr = (str **)malloc(5*sizeof(str *));
for(i=0;i<5;i++){str_ptr[i]=malloc(sizeof(str));}
str_ptr1 = (str *)malloc(5*sizeof(str));
printf("Type 1 : %p and %p \n",str_ptr1,str_ptr1+1);
printf("Type 2 : %p and %p \n",str_ptr[0],str_ptr[1]);
}
或auth_basic "Restricted Content";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
limit_req zone=admin burst=5 nodelay;
limit_req_status 503;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
}
location ^~ /.well-known/ {
allow all;
auth_basic off;
}
。
True
但是,如果您对实际匹配的元素感兴趣,可以使用以下生成器表达式来执行此操作:
False