我有这段代码:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QStatusBar, QLabel
class MainWindow(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
statusBar = QStatusBar()
statusBar.setStyleSheet('QStatusBar::item {border: None;}')
self.setStatusBar(statusBar)
statusBar.addPermanentWidget(QLabel("Label: "))
statusBar.addPermanentWidget(QLabel("Data"))
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
我收到此输出keys = ['well done','come on','going to','c','D','m','l','o']
values = ['well','going','come','D']
category = []
for index, i in enumerate(keys):
for j in values:
if j in i:
category.append(j)
break
if index == len(category):
category.append("other")
print(category)
预期输出为['well', 'other', 'come', 'going', 'other', 'D', 'other', 'other']
我不确定代码有什么问题。
任何帮助都将不胜感激。
答案 0 :(得分:0)
根据更新的问题,很难判断每个关键元素中的第一个单词是否为值中的单词。这个例子太宽泛了,所以我考虑了这个并更新了我的答案。
category = []
keys = ['start', 'steak well done', 'come on', 'He is going', 'c', 'D', 'm', 'l', 'o']
values = ['well', 'going', 'come', 'D']
for key in keys:
if ' ' in key:
for value in values:
if value in key:
category.append(value)
continue
if key in values:
category.append (key)
continue
else:
category.append ('other')
category
['other', 'well', 'come', 'going', 'other', 'D', 'other', 'other', 'other']
答案 1 :(得分:0)
我会用一个标记是否找到它的标志来解决这个问题。
请注意,我在您的按键名称和值列表之间进行了切换,以便更好地符合逻辑并更改了“我”。和' j'为了更好的名称意义。
如果您愿意,可以保留自己的姓名,只添加关于“找到”的两行。
values = ['well done', 'come on', 'going to', 'c', 'D', 'm', 'l', 'o']
keys = ['well', 'going', 'come', 'D']
category = []
for index, value in enumerate(values):
found = False
for key in keys:
if key in value:
category.append(key)
found = True
break
if not found:
category.append("other")
print(category)
选项2:
values = ['well done', 'come on', 'going to', 'c', 'D', 'm', 'l', 'o']
keys = ['well', 'going', 'come', 'D']
category = []
for index, value in enumerate(values):
for key in keys:
if key in value:
category.append(key)
break
else:
category.append("other")
print(category)
在我看来,选项2是一种更优雅的解决方案。如果else
循环结束而未在途中遇到for
,则会for
之后触发break
{/ 1}}。
打印:['well', 'come', 'going', 'other', 'D', 'other', 'other', 'other']
关于你做错了什么 - 你正在添加'其他'在浏览您的密钥列表时,而不是通过您的“价值观”。列表。