簡體   English   中英

我怎樣才能對 if/elif 進行理解,而不是其他?

[英]How can I do a for comprehension with if/elif, and no else?

我想從中創建一個理解:

for w in s:
    if w in pw_set:
        a[w] += 1
    elif t in nw_set:
        a[w] += 1

我有這樣的東西,但它不起作用

[(a[w]+=1) if (w in pw_set) else (a[w]+=1) if (w in nw_set) for w in s]

如果你真的,絕對想用列表理解來做到這一點,你需要一個collections.Counter來累積結果。 (它可以從一個簡單的值列表中計算出現次數。)

> pw_set = {'a','b', 'c'}
> nw_set = {}
> s = ['a', 'b', 'q', 'z', 'e']
> a = collections.Counter(
    [
        w
        for w in (
            w if (w in pw_set or w in nw_set) else None
            for w in s
        )
        if w is not None
    ]
)
Counter({'a': 1, 'b': 1})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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