假设我们有一个这样的词典:
mysql_query("UPDATE tablename SET password='". $NPass ."' WHERE custID='$num'");
然后我们遇到一个键值对 2,8 。现在,因为键 0 的值已经出现 2 和 8 ,我需要合并前两个键并创建一个新的字典,如以下内容:
{0: [2, 8], 1: [8, 4], 3: [5]}
我知道可以进行大量的循环和删除。我真的在寻找一种更加诡异的方式。
提前致谢。
答案 0 :(得分:2)
你的同事稍后会讨厌你,但这里
>>> d = {0: [2, 8], 1: [8, 4], 3: [5]}
>>> x = ((a,b) for a,b in itertools.combinations(d,2) if a in d and b in d and set(d[a]).intersection(d[b]))
>>> for a,b in x:d[min(a,b)].extend([i for i in d[max(a,b)] if i not in d[min(a,b)]]) or d.pop(max(a,b))
[8, 4]
>>> d
{0: [2, 8, 4], 3: [5]}
答案 1 :(得分:1)
d = {0: [2, 8],
1: [8, 4],
3: [5]}
revmap = {}
for k,vals in d.items():
for v in vals:
revmap[k] = v
k,v = 2,8
d[revmap[k]].extend([i for i in d[revmap[v]] if i not in d[revmap[k]]])
d.pop(revmap[v])