gpt4 book ai didi

python - 使用字典值排列进行字符串格式化

转载 作者:行者123 更新时间:2023-12-01 09:20:05 26 4
gpt4 key购买 nike

这是我目前拥有的:

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

此输出合并匹配 CLIENTNAMESMPID 值。

输出:

[{'MPID': ['A'], 'CLIENTNAME': 'AAA'}, 
{'MPID': ['C'], 'CLIENTNAME': 'BBB'},
{'MPID': ['C1', 'C2', 'C3'], 'CLIENTNAME': 'CCC'}]

我现在想做的是用每个 MPID 的所有排列格式化一个字符串,但前提是字典包含超过 1 个 MPID。 (在本例中,只有 CCC 具有超过 1 个 MPID)。

这是我正在格式化的查询:

query = '''x = '{}' and y = '{}' union 
x = '{}' and y = '{}';'''

此查询需要将所有 MPIDS 相互比较。所需的输出将是:

'''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 值在字符串的第二行中交换位置。

完成这一部分的有效方法是什么?

谢谢。

最佳答案

您可以使用 itertools 中的组合

from itertools import combinations

combos = list(combinations(final[2]['MPID'], 2))
combos.sort(key=lambda x: x[1])
for combo in combos:
a, b = combo
print '''x = '{}' and y = '{}' union
x = '{}' and y = '{}';'''.format(a, b, b, a)

打印:

x = 'C1' and y = 'C2' union 
x = 'C2' and y = 'C1';
x = 'C1' and y = 'C3' union
x = 'C3' and y = 'C1';
x = 'C2' and y = 'C3' union
x = 'C3' and y = 'C2';

如果该顺序对您很重要,您可能需要调整排序

关于python - 使用字典值排列进行字符串格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50862630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com