大家好,我正在尝试从字典中迭代以获取密钥,以防某些密钥为空,但我不知道如何实现这一点。
有什么想法吗?
import sys
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import QApplication, QPushButton, QVBoxLayout, QWidget
class Widget(QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent=parent)
self.verticalLayout = QVBoxLayout(self)
# self.verticalLayout.setObjectName("verticalLayout")
for i in range(10):
pushButton = QPushButton(self)
pushButton.setObjectName("pushButton{}".format(i))
pushButton.setText(str(i))
self.verticalLayout.addWidget(pushButton)
timer = QTimer(self)
timer.setInterval(1000)
timer.timeout.connect(self.updateText)
timer.start()
def updateText(self):
for i in range(10):
child = self.findChild(QPushButton, "pushButton{}".format(i))
counter = int(child.text())
child.setText(str(counter+1))
if __name__ == '__main__':
app = QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
惠特这个例子我得到{'country':'加拿大','名字':'','手机':''}但是当我真正想要的只是获得空键的键使用append列表,问题是它给了我所有的键,而不仅仅是空键。
在这种情况下,我想返回这样的内容: 姓名,电话
感谢您的帮助。
答案 0 :(得分:2)
迭代字典并提取值为空字符串的键:
empty_keys = [k for k, v in args.items() if v == '']
或作为一种功能:
>>> def val(**args):
... return [k for k, v in args.items() if v == '']
...
>>> val(name = '', country = 'Canada', phone = '')
['phone', 'name']
答案 1 :(得分:1)
这是获取空键列表的方法:
empty = [k for k, v in args.items() if not v or v.isspace()]
请注意,上述内容包括值为None
或''
或仅为空格的情况。
答案 2 :(得分:0)
for语句可用于迭代字典的键/值,然后你可以用它们做你想做的事。
def val(args) :
outputList = []
for k, v in args :
if v == '' :
outputList.append(k)
return outputList
此函数将返回由值为空字符串的键组成的列表。