Hướng dẫn python check if value is in multiple lists - python kiểm tra xem giá trị có trong nhiều danh sách không

Đưa ra câu hỏi cập nhật của bạn, hãy giả sử các biến

a
5 nằm trong phạm vi toàn cầu

value = 'a'
a = ['a','b','c']
b = ['d','e','f']
d = ['g','h','i']
c = ['j','k','l']

w = next[n for n,v in filter[lambda t: isinstance[t[1],list], globals[].items[]] if value in v]
print[w]

sản xuất

a

tức là tên của danh sách đầu tiên trong không gian tên toàn cầu có chứa

a
6

Nếu các biến nằm trong phạm vi cục bộ, ví dụ: Trong một chức năng, bạn có thể sử dụng

a
7 thay thế

def f[]:
    a = ['a','b','c']
    b = ['d','e','f']
    d = ['g','h','i']
    c = ['j','k','l']
    w = next[n for n,v in filter[lambda t: isinstance[t[1],list], locals[].items[]] if value in v]
    print[w]

f[]

sản xuất

a

tức là tên của danh sách đầu tiên trong không gian tên toàn cầu có chứa

a
6

targ_a = ['a','b','c']
targ_b = ['d','e','f']
targ_d = ['g','h','i']
targ_c = ['j','k','l']
w = next[n for n,v in filter[lambda t: isinstance[t[1],list] and t[0].startswith['targ_'], globals[].items[]] if value in v]
print[w]

sản xuất

tức là tên của danh sách đầu tiên trong không gian tên toàn cầu có chứa
a
6

Nếu các biến nằm trong phạm vi cục bộ, ví dụ: Trong một chức năng, bạn có thể sử dụng

a
7 thay thế

Python 3.4.3 [default, Oct 14 2015, 20:28:29] 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> value = 'a'
>>> targ_a = ['a','b','c']
>>> targ_b = ['d','e','f']
>>> targ_d = ['g','h','i']
>>> targ_c = ['j','k','l']
>>> globals[]
{'targ_d': ['g', 'h', 'i'], 'targ_c': ['j', 'k', 'l'],
 '__builtins__': ,
 '__doc__': None, '__package__': None,
 '__loader__': ,
 'targ_a': ['a', 'b', 'c'], '__name__': '__main__',
 'targ_b': ['d', 'e', 'f'], '__spec__': None, 'value': 'a'}

Lưu ý: Bạn có thể muốn áp dụng một quy ước đặt tên để nhắm mục tiêu một nhóm biến cụ thể, ví dụ:

a
8 như một tiền tố

targ_a

>>> next[n for n,v in filter[lambda t: isinstance[t[1],list] and t[0].startswith['targ_'], globals[].items[]] if value in v]
'targ_a'

Để giải thích mọi thứ chi tiết hơn một chút, chúng ta hãy xem cuộc gọi

a
9 trả về những gì. Ví dụ sử dụng vỏ python

Tôi có một danh sách các danh sách [nhiều câu mã hóa]. Đối với bất kỳ ai không biết các câu mã hóa là gì, danh sách của tôi là như vậy:

list1 = [['hello', 'my', 'name'], ['this', 'is', 'stack', 'exchange'], ... ]

Tôi cũng có một danh sách các từ khóa,

def f[]:
    a = ['a','b','c']
    b = ['d','e','f']
    d = ['g','h','i']
    c = ['j','k','l']
    w = next[n for n,v in filter[lambda t: isinstance[t[1],list], locals[].items[]] if value in v]
    print[w]

f[]
4.

Đối với mỗi câu trong

def f[]:
    a = ['a','b','c']
    b = ['d','e','f']
    d = ['g','h','i']
    c = ['j','k','l']
    w = next[n for n,v in filter[lambda t: isinstance[t[1],list], locals[].items[]] if value in v]
    print[w]

f[]
5, tôi muốn kiểm tra xem nó có ở trong
def f[]:
    a = ['a','b','c']
    b = ['d','e','f']
    d = ['g','h','i']
    c = ['j','k','l']
    w = next[n for n,v in filter[lambda t: isinstance[t[1],list], locals[].items[]] if value in v]
    print[w]

f[]
4 không. Hơn nữa, tôi muốn một phương pháp duy nhất được áp dụng cho mỗi câu. Dưới đây là mã hoạt động [nhưng không hiệu quả] của tôi:

list1 = [['hello', 'my', 'name'], ['this', 'is', 'stack', 'exchange']]
key_words = ['hello', 'name', 'stack']    

def get_features[sentence, key_words]:
    return [word for word in sentence if word in key_words]

f = []
for sent in list1:
    f.append[get_features[sent, key_words]]

Điều này là tốt, nhưng kích thước của tôi là như vậy:

a
0

Điều này tất nhiên là không hiệu quả, và tôi muốn tìm cách làm điều này nhanh hơn. Từ điển có thể được sử dụng theo một cách nào đó? Tôi đã nghĩ đến việc thay đổi

def f[]:
    a = ['a','b','c']
    b = ['d','e','f']
    d = ['g','h','i']
    c = ['j','k','l']
    w = next[n for n,v in filter[lambda t: isinstance[t[1],list], locals[].items[]] if value in v]
    print[w]

f[]
4 từ danh sách thành từ điển khóa: value = word: 1. Sau đó tôi có thể làm một cái gì đó như

a
1

Nhưng tôi không chắc làm thế nào

def f[]:
    a = ['a','b','c']
    b = ['d','e','f']
    d = ['g','h','i']
    c = ['j','k','l']
    w = next[n for n,v in filter[lambda t: isinstance[t[1],list], locals[].items[]] if value in v]
    print[w]

f[]
8 sẽ được thực hiện. Làm điều này sẽ cho phép O [1] truy cập vào các từ trong key_words nếu chúng thực sự ở đó, thay vì phải tìm kiếm toàn bộ danh sách cho đến khi nó được tìm thấy, với O [n].

Kiểm tra xem nhiều giá trị có nằm trong danh sách trong Python # không

Sử dụng hàm

def f[]:
    a = ['a','b','c']
    b = ['d','e','f']
    d = ['g','h','i']
    c = ['j','k','l']
    w = next[n for n,v in filter[lambda t: isinstance[t[1],list], locals[].items[]] if value in v]
    print[w]

f[]
9 để kiểm tra xem nhiều giá trị có nằm trong danh sách không, ví dụ:
a
0. Hàm
def f[]:
    a = ['a','b','c']
    b = ['d','e','f']
    d = ['g','h','i']
    c = ['j','k','l']
    w = next[n for n,v in filter[lambda t: isinstance[t[1],list], locals[].items[]] if value in v]
    print[w]

f[]
9 sẽ trả về
a
2 nếu tất cả các giá trị được chỉ định nằm trong danh sách và
a
3 nếu không.

a
2

Chúng tôi đã sử dụng một biểu thức máy phát để lặp lại trong bộ sưu tập nhiều giá trị.

Biểu thức của máy phát được sử dụng để thực hiện một số hoạt động cho mọi phần tử hoặc chọn một tập hợp con của các phần tử đáp ứng một điều kiện.

Trên mỗi lần lặp, chúng tôi kiểm tra xem giá trị hiện tại có trong danh sách và trả về kết quả không.

Chức năng tích hợp tất cả [] lấy một sự khác biệt như một đối số và trả về

a
2 nếu tất cả các yếu tố trong điều đó là sự thật [hoặc điều đó là trống rỗng].

Nếu một trong các giá trị không có trong danh sách, hàm

def f[]:
    a = ['a','b','c']
    b = ['d','e','f']
    d = ['g','h','i']
    c = ['j','k','l']
    w = next[n for n,v in filter[lambda t: isinstance[t[1],list], locals[].items[]] if value in v]
    print[w]

f[]
9 sẽ quay lại ngắn mạch
a
3.

a
3

Ngoài ra, bạn có thể sử dụng lớp

a
7 để chuyển đổi bộ sưu tập các giá trị thành đối tượng
a
8 để có thể sử dụng phương thức
a
9.

a
4

Phương thức set.issubset kiểm tra nếu mọi yếu tố của

a
8 nằm trong chuỗi được cung cấp.

Điều kiện đánh giá thành

a
2 chỉ khi tất cả các giá trị được chỉ định có trong danh sách.

Bài Viết Liên Quan

Chủ Đề