if.increment变量else.increment不同的变量

  • 本文关键字:变量 increment else if python
  • 更新时间 :
  • 英文 :


必须有更好/更有效的方法来做到这一点。如果第一个字符串匹配,我想增加一个变量;如果第二个变量匹配第二个字符串,我想增量。

ifCount = 0
elseCount = 0
for x in dict:
if x["bla"] == 'this':
ifCount += 1
elif x["bla"] == 'that':
elseCount += 1
from collections import Counter
from operator import itemgetter
items = [
{"bla": "this"},
{"bla": "this"},
{"bla": "that"},
{"bla": "that"},
{"bla": "that"},
{"bla": "that"},
{"bla": "this"},
{"bla": "that"}
]
counter = Counter(map(itemgetter("bla"), items))
print(counter["this"])
print(counter["that"])

输出:

3
5
>>> 

就效率而言,您的代码没有任何问题。它简明扼要,重复一次。如果你想把它缩短一点,我们可以用filter

ifCount = len(filter(lambda x: x['bla'] == 'this', dict))
elseCount = len(filter(lambda x: x['bla'] == 'this', dict))

它更短,但可读性是高还是低还存在争议。这种语法在更大的代码库中可能是有意义的,其中lambda实际上是一些经常使用和众所周知的函数,但在这个孤立的例子中,我认为for循环更可读。

;明显的";处理这个问题的方法是使用dict来计算出现次数。首先,将现有可迭代的名称从dict更改为可用的名称,比如d。。。

只需使用Counter对象。

from collections import Counter
label_count = Counter(entry["bla"] for entry in d)

label_count现在包含d中所有"bla"条目的计数,特别是thisthat的计数。如果您只想要多个元素中的两个,则可以添加子句if entry["bla"] in ["this", "that"]

最新更新