Python在字典中迭代以获得空键

时间:2017-02-12 18:50:20

标签: python dictionary

大家好,我正在尝试从字典中迭代以获取密钥,以防某些密钥为空,但我不知道如何实现这一点。

有什么想法吗?

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列表,问题是它给了我所有的键,而不仅仅是空键。

在这种情况下,我想返回这样的内容: 姓名,电话

感谢您的帮助。

3 个答案:

答案 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

此函数将返回由值为空字符串的键组成的列表。