[英]Python; Dictionary iteration
z = []
for k, v in b.iteritems():
if v == "Supplementary Assignment, Smith, Bowen":
z.append(not k)
您好,我正在嘗試迭代dict中的值。 目的是z.append()
' b
'中所有不包含if
語句中為v
定義的多個值的鍵。 所以,如果字典“ b
”包含一個鍵/值對,它的值是“史密斯然后該密鑰將從被排除z.append()
調用,而所有其他鍵將被追加。 感謝您的幫助!
您需要使用隸屬度測試( not in
)針對序列或集合進行測試:
z = []
for k, v in b.iteritems():
if v not in {"Supplementary", "Assignment", "Smith", "Bowen"}:
z.append(k)
或者,在列表理解中更緊湊:
z = [key for key, value in b.iteritems() if value not in {"Supplementary", "Assignment", "Smith", "Bowen"}]
這會列出b
中所有未在集合中列出其值的鍵。
如果循環效率是最重要的,並且您使用的是3.3 之前的Python版本, 請先將集合存儲在局部變量中,然后在循環中使用它:
z = []
excluded = {"Supplementary", "Assignment", "Smith", "Bowen"}
for k, v in b.iteritems():
if v not in excluded:
z.append(k)
或列表comp版本:
excluded = {"Supplementary", "Assignment", "Smith", "Bowen"}
z = [key for key, value in b.iteritems() if value not in excluded]
Python 3.3可以in {...}
語法( not in {...}
語法(帶有集合)來frozenset()
),並優化代碼以將本地frozenset()
常量用於集合文字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.