编辑:只需要 kv1 和 kv2 的值的总和
使用 adefaultdict
避免检查密钥是否存在:
from collections import defaultdict
res = defaultdict(int)
for line in crs:
data = {k: v for k, v in (i.split('=') for i in line.split('&'))}
for key in ['kv1', 'kv2']:
res[key] += int(data.get(key, 0))
现在res
包含:
defaultdict(<class 'int'>, {'kv2': 36, 'kv1': 11})
像普通字典一样访问:
>>> res['kv1']
11
>>> res['kv2']
36
以前的解决方案
您可以在一行中执行此操作:
>>> [{k: v.strip() for k, v in [i.split('=') for i in line.split('&')]}
for line in crs]
[{'kv1': '1', 'kv2': '12', 'kv3': '0', 'num': '123-456-7890'},
{'kv2': '12', 'kv3': '0', 'kv4': '1', 'num': '123-456-7890'},
{'kv1': '10', 'kv2': '12', 'kv3': '0', 'num': '123-456-7890'}]
如果您只需要'kv1'
,您可以直接对其进行过滤:
>>> [{k: int(v) for k, v in [i.split('=') for i in line.split('&')]
if k == 'kv1'} for line in crs]
[{'kv1': 1}, {}, {'kv1': 10}]