首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何检查字典,其中值是该列表的一个元素的列表?

如何检查字典,其中值是该列表的一个元素的列表?
EN

Stack Overflow用户
提问于 2018-01-17 12:21:55
回答 3查看 56关注 0票数 0

如果我有一个字典,其中每个值都是一个列表,我如何检查我的列表中是否有特定的元素?例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myDict = { 0 : ['a','b','c'],
           1 : ['d','e','f']}

如何检查'a'是否存在?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-17 12:28:36

检查所有值

我们可以使用itertools.chain,并在一个相当自我解释的班轮中使用它。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from itertools import chain

if 'a' in chain.from_iterable(myDict.values()):
    # do something
    pass

在这里,我们将列表的.values()链接到一个可迭代的位置,从而检查'a'的成员资格。

请注意,这与列表中的值总数一起以线性时间运行。如果您必须执行一次成员资格检查,我们不能对它做很多事情,但是如果我们必须多次检查它,最好将值缓存在一个集合中(假设值是hashable的)。

检查特定的密钥

如果您想要检查特定的键,我们只需查找相应的值并检查成员资格:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if 'a' in myDict[0]:
    # do something
    pass

如果不确定密钥是否存在于myDict中,并且在这种情况下我们希望返回False,则可以使用.get(..)并使用() (空元组)作为回退值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# will not error, but False in case key does not exists
if 'a' in myDict.get(0, ()):
    # do something
    pass
票数 1
EN

Stack Overflow用户

发布于 2018-01-17 12:23:10

您可以使用any

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
any('a' in lst for lst in myDict.values())

这将停止迭代,并在第一次查找时计算到Trueany是以下模式的内置捷径:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for x in y:
    if condition:
        return True
return False
# return any(condition for x in y)
票数 8
EN

Stack Overflow用户

发布于 2018-01-17 12:26:57

当有人想要浏览字典的值时,我总是觉得很奇怪。如果做很多次,这是非常没有效率的。

相反,我会构建另一个字典,或者一个set来快速检查:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
myDict = { 0 : ['a','b','c'],
           1 : ['d','e','f']}

rset = {x for v in myDict.values() for x in v}

print(rset)

给予:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{'b', 'e', 'c', 'd', 'a', 'f'}

现在:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'a' in rset

是超快和简洁的。在原始数据集上构建尽可能多的集和字典,以获得快速查找。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48309380

复制
相关文章
在MapReduce中利用MultipleOutputs输出多个文件
用户在使用Mapreduce时默认以part-*命名,MultipleOutputs可以将不同的键值对输出到用户自定义的不同的文件中。
星哥玩云
2022/07/03
2.1K0
在MapReduce中利用MultipleOutputs输出多个文件
让Pig在风暴中飞驰——Pig On Storm
1以PigOnStorm直面实时应用开发面的挑战 在TRC(Tencent Realtime Computing)系统中TDProcess负责为各个应用提供实时计算的能力和服务,Storm是TDProcess的核心部件,虽然Storm已经成为开源流式计算领域的实际标准,但其生态系统远没有Hadoop完善,在Storm之上没有像Hive、Pig这类解放应用开发人员的效率提升工具,所以当你决定使用Storm来实现某个应用时,必须首先去熟悉Storm的原理以及API,然后才能基于API编写程序。 熟悉Hadoop
腾讯大数据
2018/01/26
8450
pig中load文件时报错
grunt> A=load 'data.txt' as (name: chararray, id: int, age: int);  2012-09-11 18:06:32,072 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000: Error during parsing. Encountered " <PATH> "A=load "" at line 3, column 1. Was expectin
闵开慧
2018/03/30
9750
python将多个文件内容输出到一个文件中
生成多个文件脚本 #coding=utf-8 #import os #import sys sql1Script = ''' use scrm_%s; -- 公司code需替换为相应公司的code CREATE OR REPLACE VIEW `scrm_crm_contract` AS SELECT * FROM scrm_jishufuwu.`scrm_crm_contract` WHERE `company_code` = '%s'; -- 更新数据库版本. INSERT INTO gf_db_v
章工运维
2023/05/19
1.2K0
vim打开多个文件、同时显示多个文件、在文件之间切换 打开多个文件:
1.vim还没有启动的时候: 在终端里输入 vim file1 file2 ... filen便可以打开所有想要打开的文件 2.vim已经启动 输入 :open file 可以再打开一个文件,并且此时vim里会显示出file文件的内容。
sunsky
2020/08/19
15.4K0
C++ 中的随机标头系列1
开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天,点击查看活动详情
鲸落c
2022/11/28
1.4K0
C++ 中的随机标头系列1
避免在 JS 中过多使用 IF 语句优化技巧
最近在重构代码时,我发现早期的代码使用太多的 if 语句,其程度是我从未见过的。这就是为什么我认为分享这些简单的技巧是非常重要的,这些技巧可以帮助我们避免过多的使用 if 语句。
前端小智@大迁世界
2020/10/26
2.3K0
使用结构化的标头字段改善HTTP
原文 / https://www.fastly.com/blog/improve-http-structured-headers
LiveVideoStack
2020/08/04
6660
通过主机标头的 XSS
在 IE 中处理重定向时有一个有趣的错误,它可以将任意字符插入到 Host 标头中。假设您有以下 http 响应:
Khan安全团队
2022/01/11
1.6K0
通过 HTTP 标头的 XSS
在某些情况下,在应用程序的一个 HTTP 标头中传递的信息未正确清理,并在请求页面的某处或另一端输出,从而导致 XSS 情况。
Khan安全团队
2022/03/09
2.1K0
设置和获取HTTP标头
%Net.HttpRequest的以下每个属性都包含具有相应名称的HTTP标头的值。如果不设置这些属性,则会自动计算它们:
用户7741497
2022/06/09
2.5K0
常见的HTTP标头介绍
在网络爬虫的实践过程中会遇到诸多挑战,被屏蔽是最令人头疼的一个。幸好,有许多技术可以帮助您免受IP屏蔽带来的影响,这其中,HTTP标头(HTTP Headers)的使用和优化是最有效的方法之一,但它往往也是最被大家低估的方法之一。
用户7850017
2022/05/07
1.1K0
常见的HTTP标头介绍
使用SharpZipLib压缩打包多个内存中的文件
SharpZipLib是C#写的开源压缩解压缩组件,最近项目上遇到一个需求:根据用户选择的项目生成CSV文件并下载,后来改为同时生成2个CSV文件下载下来。想到的解决办法就是将2个CSV文件打包成一个Zip文件,然后供用户下载。
深蓝studyzy
2022/06/16
2.3K0
pig基本语法——输入输出存储查看结构
http://pig.apache.org/docs/r0.17.0/basic.html
Java架构师必看
2021/05/14
4920
使用VIM搜索多个文件[通俗易懂]
使用vim可以方便的搜索多个文件,这个时侯需要使用的命令是:vimgrep。vimgrep的命令格式是:
全栈程序员站长
2022/11/09
2.1K0
Python中跨越多个文件使用全局变量
这个琐碎的指南是关于在 Python 中跨多个文件使用全局变量。但是在进入主题之前,让我们简单地看看全局变量和它们在多个文件中的用途。
Python学习者
2023/10/20
8170
如何使用OpenCV在Python中访问IP摄像头
首先,必须找出网址流是什么。通过在构造函数中提供摄像机的网址流,可以在OpenCV中访问IP摄像机cv2.VideoCapture。可以使用某些网络扫描实用程序(例如在linux上的arp-scan)找到摄像机的IP地址。网址进一步的细节,如Protocol,Credentials和Channel应该可以在相机说明书或软件/手机应用程序中找到。我们通过在网络上搜索相机的型号来找到相机的网址流。
小白学视觉
2020/09/14
6.7K0
使用nano在Linux中编辑文件
GNU nano,简称nano,是大多数Linux发行版的基本内置编辑器。GNU nano是一个小巧友好的文本编辑器. 与基本的文本编辑相比,nano提供许多额外的特性,例如:交互式的查找和替换,定位到指定的行列,自动缩进,特性切换,国际化支持,以及文件名标记完成。本教程中,我们将介绍一些帮助您入门的基本知识。
风研雨墨
2018/08/17
7.3K0
点击加载更多

相似问题

在Pig中处理tar标头

11

在多个R输出文件中写入标头

10

避免在.h文件中包含标头

50

在输出文件中写入elf标头

11

希望避免在单击标头时执行多个操作

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文