一句简短的话,只是为了好玩:
all_examples = ['A,1,1', 'B,2,1', 'C,4,4', 'D,4,5']
map(dict, zip(*[[(s[0], int(x)) for x in s.split(',')[1:]] for s in all_examples]))
生成:
[{'A': 1, 'C': 4, 'B': 2, 'D': 4},
{'A': 1, 'C': 4, 'B': 1, 'D': 5}]
作为额外福利,这也适用于更长的序列:
all_examples = ['A,1,1,1', 'B,2,1,2', 'C,4,4,3', 'D,4,5,6']
输出:
[{'A': 1, 'C': 4, 'B': 2, 'D': 4},
{'A': 1, 'C': 4, 'B': 1, 'D': 5},
{'A': 1, 'C': 3, 'B': 2, 'D': 6}]
解释:
map(dict, zip(*[[(s[0], int(x)) for x in s.split(',')[1:]] for s in all_examples]))
[... for s in all_examples]
针对列表中的每个元素:
s.split(',')[1:]
通过逗号拆分它,然后取第一个元素之后的每个元素
(...) for x in
并将其转换为元组列表
s[0], int(x)
将第一个字母与该元素转换为整数的元素配对
zip(*[...])
现在转置您的元组列表
map(dict, ...)
并将每个元组列表转换为字典!
split
将其转换为一个列表的列表,然后进行查找。 - roadrunner66