phi*_*thy 0 python iteration dictionary for-loop list
z = []
for k, v in b.iteritems():
if v == "Supplementary Assignment, Smith, Bowen":
z.append(not k)
Run Code Online (Sandbox Code Playgroud)
您好,我正在尝试迭代dict中的值.这里的目标是要z.append()在所有的键" b不包含定义的多重价值" v的if声明.因此,如果dict' b'包含一个值为'Smith'的键/值对,则该键将从z.append()调用中排除,而所有其他键将被追加.感谢您的帮助!
您需要使用成员资格测试(not in)测试序列或集合:
z = []
for k, v in b.iteritems():
if v not in {"Supplementary", "Assignment", "Smith", "Bowen"}:
z.append(k)
Run Code Online (Sandbox Code Playgroud)
或者,在列表理解中更紧凑:
z = [key for key, value in b.iteritems() if value not in {"Supplementary", "Assignment", "Smith", "Bowen"}]
Run Code Online (Sandbox Code Playgroud)
这将列出b其值未在集合中列出的所有键.
如果循环效率是最重要的并且您在 3.3 之前使用Python版本,那么首先将该集存储在局部变量中并在循环中使用它:
z = []
excluded = {"Supplementary", "Assignment", "Smith", "Bowen"}
for k, v in b.iteritems():
if v not in excluded:
z.append(k)
Run Code Online (Sandbox Code Playgroud)
或列表comp版本:
excluded = {"Supplementary", "Assignment", "Smith", "Bowen"}
z = [key for key, value in b.iteritems() if value not in excluded]
Run Code Online (Sandbox Code Playgroud)
Python 3.3识别in {...}或not in {...}语法(带有集合)并优化代码以使用frozenset()集合文字的局部常量.