python如何查找列表元素

如果你想坚持你的模式,这是一个选择:

search = {'Age' : 21, 'Gender' : 'M'}

idxs = [ (main_col.index(key), val) for key, val in search.items()]

tmp = [ set(tuple(person) for person in main_row if person[i] == v) for i, v in idxs ]

res = set.intersection(*tmp)

#=> {('Wade', 21, 'M'), ('Malcom', 21, 'M')}

注:

我用过

intersection

AND

,但您可以自定义上可用的任何操作

set

https://docs.python.org/3.7/library/stdtypes.html#set

):

union

,

交叉

difference

, ...

您可以转换为方便的方法:

def lookup(search, main_row, main_col):

idxs = [ (main_col.index(key), val) for key, val in search.items()]

tmp = [ set(tuple(person) for person in main_row if person[i] == v) for i, v in idxs ]

return set.intersection(*tmp)

lookup({'Age' : 21}, main_row, main_col)

#=> {('Wade', 21, 'M'), ('Mellisa', 21, 'F'), ('Malcom', 21, 'M')}

lookup({'Age' : 21, 'Gender' : 'M'}, main_row, main_col)

#=> {('Malcom', 21, 'M'), ('Wade', 21, 'M')}

lookup({'Age' : 21, 'Gender' : 'M', 'Name': 'Malcom'}, main_row, main_col)

#=> {('Malcom', 21, 'M')}

main_row = [['Peter', 18, 'M'], ['Sam', 20, 'M'], ['Carol', 19, 'F'], ['Malcom', 21, 'M'], ['Oliver', 25, 'M'], ['Mellisa', 21, 'F'], ['Minreva', 18, 'F'], ['Bruce', 23, 'M'], ['Clarke', 24, 'M'], ['Zuck', 22, 'M'], ['Slade', 23, 'M'], ['Wade', 21, 'M'], ['Felicity', 22, 'F'], ['Selena', 23, 'F'], ['Ra\'s Al Gul',700, 'M'], ['Oliver', 31, 'M']]

这就构成了字典

people

,将头的第一个列表分开:

people = [ {'name':name, 'age':age, 'gender':gender} for name, age, gender in main_row]

#=> [{'name': 'Peter', 'age': 18, 'gender': 'M'}, {'name': 'Sam', 'age': 20, 'gender': 'M'}, ....

next(person for person in people if person['name'] == 'Oliver' and person['age'] == 31 )

#=> {'name': 'Oliver', 'age': 31, 'gender': 'M'}

the_21_years_old = [ person for person in people if person['age'] == 21 ]

#=> [{'name': 'Malcom', 'age': 21, 'gender': 'M'}, {'name': 'Mellisa', 'age': 21, 'gender': 'F'}, {'name': 'Wade', 'age': 21, 'gender': 'M'}]

您可以对返回的“记录”执行任何需要的操作:

for person in the_21_years_old:

print(person['name'], person['age'])

# Malcom 21

# Mellisa 21

# Wade 21

(0)

相关推荐

  • Java的无参构造函数

    一 点睛 1 如果一个类没有定义任何构造函数,那么该类会自动生成1个默认的构造函数.默认构造函数没有参数. 2 如果一个类定义了构造函数,但这些构造函数都有参数,那么不会生成默认构造函数,也就是说此时 ...

  • 用Cython加速Python到“起飞”

    事先声明,标题没有把"Python"错打成"Cython",因为要讲的就是名为"Cython"的东西. Cython是让Python脚本支持 ...

  • (1条消息) Python笔记 class中的

    Python中的init的含义 之前一直不理解__init__()方法的作用核意义,今天看了一些别人写的博客,对这个内容学习了一下. init()方法有两个方面的重大意义:1. 在对象生命周期中初始化 ...

  • Java中this关键字的详解

    在java的学习中,当接触到类这一章的时候,就会避免不了的接触到this关键字. 首先,this关键字指向的是当前对象的引用 作用: this.属性名称 指的是访问类中的成员变量,用来区分成员变量和局 ...

  • Python | 有序序列中元素的查找问题解决方法

    问题描述示例:如何查找有序序列中某一的元素输入:[1,2,3,4,5,6,--,100]   61 #查找的元素输出:61解决方案查找元素.一般地,我们可以用for循环进行遍历,再用if语句进行查找. ...

  • 编程语言Python代码阅读(第8篇):列表元素逻辑判断

    Python 代码阅读合集介绍:为什么不推荐Python初学者直接看项目源码 本篇阅读的三份代码的功能分别是判断列表中的元素是否都符合给定的条件:判断列表中是否存在符合给定的条件的元素:以及判断列表中 ...

  • Selenium2+python自动化36-判断元素存在

    前言 最近有很多小伙伴在问如何判断一个元素是否存在,这个方法在selenium里面是没有的,需要自己写咯. 元素不存在的话,操作元素会报错,或者元素有多个,不唯一的时候也会报错.本篇介绍两种判断元素存 ...

  • Selenium2+python自动化42-判断元素(expected_conditions)

    前言 经常有小伙伴问,如何判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方 ...

  • appium+python自动化34-获取元素属性

    前言 在做断言的时候,我们往往需要先获取目标元素的某些属性值,拿来判断,比如登录后,如何判断登录成功了呢?可以通过登录后获取账号的名称(元素的text属性)来判断. 一.获取text ``` # co ...

  • Python No.12_列表循环&元组

    一.列表循环ndd = [1,23,3,34,6,[2,2,3,4],3]for i in ndd: print(i)#列表中依次将字符串打印出来. for i in ndd[5]: print(i) ...

  • 列表推导式:简洁高效更具 Python 风格的列表创建方法

    我们在<Python 中的列表和元组>中已经详细介绍了列表(list)的基本特性和使用方法,本文将着重介绍一种 Python 中用于创建 list 的简洁高效的语法形式:列表推导式. Py ...

  • RealPython 基础教程:Python 中的列表和元组

    列表(list)和元组(tuple)几乎可称得上是 Python 中最常用.最有用的数据类型了.在每个非简单的 Python 中,你都能发现它们的使用之处. 本文将介绍 list 和 tuple 的重 ...

  • Python入门(6)——列表

    列表的定义 列表是由一系列按特定顺序排列的元素组成. 列表可以包含不同类型的元素.列表内元素的值可以重复. 列表通常用单词名称的复数表示. 列表用方括号 [ ] 表示,元素用 , 隔开. >&g ...