为了账号安全,请及时绑定邮箱和手机立即绑定

如何选择列表中的项目?

如何选择列表中的项目?

肥皂起泡泡 2021-09-02 20:20:39
我有:我有两个这样的列表:[('ELON_MUSK', True), ('BARACK_OBAMA', False), ('DONALD_TRUMP', False)][('ELON_MUSK', False), ('BARACK_OBAMA', True), ('DONALD_TRUMP', False)]我想(问题):由于ELON_MUSK和BARACK_OBAMA是true我想给他们,并追加检索到的字符串,但我敢肯定,我不知道如何寻找的问题,正确的方面,因为我什么也没有发现这一点,因此要求在这里。我希望发生:People in this image: ELON_MUSK BARACK_OBAMA我正在做:for imagePath in imageArray:        # Try comparing an unknown image        unknown_image = face_recognition.load_image_file(imagePath)        unknown_face = face_recognition.face_encodings(unknown_image)        face_count = len(unknown_face)        name_list = ""        print("Checking: " + imagePath)        print("----------------------------")        for i in range(face_count):                result = face_recognition.compare_faces(face_encodings, unknown_face[i])                # Print the result as a list of names with True/False                names_with_result = list(zip(face_names, result))                print(names_with_result, end = '')                print(" -- Checking face #" + str(i+1))                # vvv I HAVE NO IDEA ABOUT THIS PART vvv                if "True" in names_with_result:                        #name_list = name_list + " name of the TRUE person";        print("People in this image: " + name_list)我越来越:People in this image: 
查看完整描述

3 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

# Separate lists of (name, is_in_image) tuples

>>> a = [('ELON_MUSK', True), ('BARACK_OBAMA', False), ('DONALD_TRUMP', False)]

>>> b = [('ELON_MUSK', False), ('BARACK_OBAMA', True), ('DONALD_TRUMP', False)]

# Combine the lists

>>> together = a + b

# Create a list containing all names if the second element (is_in_image) is True

>>> [name for name, is_in_image in together if is_in_image]

['ELON_MUSK', 'BARACK_OBAMA']

>>> print('People in this image: {}'.format(', '.join([name for name, is_in_image in together if is_in_image])))

People in this image: ELON_MUSK, BARACK_OBAMA

我认为你目前的做法主要的问题是,你的追加试验if 'True' in names_with_result,而不是if True in names_with_result... 'True' != True...


>>> sample_result = ('ELON_MUSK', True)

>>> 'True' in sample_result

False

>>> True in sample_result

True

第一个测试'True' in sample_result返回 False,然后不会触发您的附加逻辑,从而传递该元素。


查看完整回答
反对 回复 2021-09-02
?
慕的地10843

TA贡献1785条经验 获得超8个赞

你也可以这样做:


l1 = [('ELON_MUSK', True), ('BARACK_OBAMA', False), ('DONALD_TRUMP', False)]

l2 = [('ELON_MUSK', False), ('BARACK_OBAMA', True), ('DONALD_TRUMP', False)]


# join the two list

l1.extend(l2)


# create a simple function that return a list of true


f = lambda x: [i for i,j in x if j]


print('{} is not {}'.format(*f(l1)))


查看完整回答
反对 回复 2021-09-02
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

试试这个:


A= [('ELON_MUSK', True), ('BARACK_OBAMA', False), ('DONALD_TRUMP', False)]

B= [('ELON_MUSK', False), ('BARACK_OBAMA', True), ('DONALD_TRUMP', False)]



name_list  = ''.join([a[0]+' , '+b[0] for a in A for b in B if a[1]==True and b[1]== True])

print("People in this image: "+ name_list)


查看完整回答
反对 回复 2021-09-02
  • 3 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信