Use of if/else in an dictionary comprehension in Python 3.x
本问题已经有最佳答案,请猛点这里访问。
假设我有:
1 2 3 4 5 | l = [ ['Brasil', 'Italia', [10, 9]], ['Brasil', 'Espanha', [5, 7]], ['Italia', 'Espanha', [7,8]], ] |
一句空话:
1 | d = {} |
号
我试着在听写理解中做这个操作:
1 2 3 4 5 6 7 | for x in l: if (x[0] not in d): d[x[0]] = 0 else: d[x[0]] += 1 # Out: {'Brasil': 1, 'Italia': 0} |
但是当我尝试的时候:
1 2 3 | d = {k: (0 if (k not in d) else (d[k]+1)) for k in [x[0] for x in l]} # Out: {'Brasil': 0, 'Italia': 0} |
。
我做错什么了?
更好的方法是使用来自
1 2 3 4 5 6 7 8 9 10 11 12 13 | from collections import Counter l = [ ['Brasil', 'Italia', [10, 9]], ['Brasil', 'Espanha', [5, 7]], ['Italia', 'Espanha', [7,8]], ] c = Counter([x[0] for x in l]) c.subtract({x[0]: 1 for x in l}) print(c) # Counter({'Brasil': 1, 'Italia': 0}) |