用python更新python中的Counter集合,而不是字母

时间:2017-07-27 03:20:12

标签: python collections counter

如何使用字符串更新计数器,而不是字符串的字母? 例如,在用两个字符串初始化此计数器之后:

extension UIImageView {
    func makeRoundedCorners(_ radius: CGFloat) {
         self.layer.cornerRadius = radius
         self.layer.masksToBounds = true
   }
}

"添加"另一个字符串,例如' red'。当我使用update()方法时,它会添加字母'' e'' d':

let roundProcessor = RoundCornerImageProcessor(cornerRadius: 15,
                                               targetSize: CGSize(width: 30, height: 30))

userAvatarImageView.kf.setImage(with: URL(string: string),
                                    placeholder: UIImage(named: "placeholder"),
                                    options: [ .processor(roundProcessor)])

5 个答案:

答案 0 :(得分:8)

c.update(['red'])
>>> c
Counter({'black': 1, 'blue': 1, 'red': 1})
  

Source可以是可迭代的,字典或其他Counter实例。

虽然字符串是可迭代的,但结果并不是您所期望的。首先将其转换为列表,元组等。

答案 1 :(得分:6)

您可以使用字典更新它,因为添加另一个字符串与使用count +1更新密钥相同:

from collections import Counter
c = Counter(['black','blue'])

c.update({"red": 1})  

c
# Counter({'black': 1, 'blue': 1, 'red': 1})

如果密钥已存在,则计数将增加1:

c.update({"red": 1})

c
# Counter({'black': 1, 'blue': 1, 'red': 2})

答案 2 :(得分:4)

您可以使用:

public class HashMapSample {
    public static void main(String[] args) {
        Map<Integer,List<String>> myHash = new HashMap<>();
        myHash.put(1, Arrays.asList("a","aa","aaa"));
        myHash.put(3, Arrays.asList("c","ccc","ccc"));
        myHash.put(2, Arrays.asList("b","bb","bbb"));
        System.out.println(myHash);
        myHash.entrySet().stream().sorted(Comparator.comparing(Map.Entry::getKey)).forEach(System.out::println);

    }
}

无论是否存在密钥,所有这些选项都将起作用。如果存在,他们将计数增加1

答案 3 :(得分:0)

试试这个:

c.update({'foo': 1})

答案 4 :(得分:0)

我还是举一个例子,也可以增加和减少计数数量

from collections import Counter

counter = Counter(["red", "yellow", "orange", "red", "orange"])
# to increase the count
counter.update({"yellow": 1})
# or
counter["yellow"] += 1

# to decrease
counter.update({"yellow": -1})
# or
counter["yellow"] -= 1