簡體   English   中英

蟒蛇; 字典迭代

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM