以下是我目前拥有的:
from collections import defaultdict
output = [{'MPID': 'A', 'CLIENTNAME': 'AAA'},
{'MPID': 'C', 'CLIENTNAME': 'BBB'},
{'MPID': 'C1', 'CLIENTNAME': 'CCC'},
{'MPID': 'C2', 'CLIENTNAME': 'CCC'},
{'MPID': 'C3', 'CLIENTNAME': 'CCC'}]
d = defaultdict(list)
for item in output:
d[item['CLIENTNAME']].append(item['MPID'])
final = [{'CLIENTNAME': k, 'MPID': v} for k, v in d.items()]
print final
此输出合并
MPID
匹配值
CLIENTNAMES
.
输出:
[{'MPID': ['A'], 'CLIENTNAME': 'AAA'},
{'MPID': ['C'], 'CLIENTNAME': 'BBB'},
{'MPID': ['C1', 'C2', 'C3'], 'CLIENTNAME': 'CCC'}]
我现在要做的是用每个mpid的所有置换格式化一个字符串,但前提是字典包含的mpid超过1。(在本例中,只有CCC的MPID大于1)。
以下是我正在格式化的查询:
query = '''x = '{}' and y = '{}' union
x = '{}' and y = '{}';'''
此查询需要将所有MPID相互比较。期望的输出是:
'''x = 'C1' and y = 'C2' union
x = 'C2' and y = 'C1';'''
'''x = 'C2' and y = 'C3' union
x = 'C3' and y = 'C2';'''
'''x = 'C1' and y = 'C3' union
x = 'C3' and y = 'C1';'''
如您所见,x和y值交换字符串第二行中的位置。
有什么方法可以有效地完成这一部分?
谢谢。