3 回答

TA貢獻1845條經(jīng)驗 獲得超8個贊
在 Python3.7 字典中是有序的,因此,您可以迭代dict.items():
d1 = {('x0', '0'): 'x0', ('x0', '1'): 'x1', ('x1', '0'): 'x1', ('x1', '1'): 'x0'}
d2 = {('y0', '0'): 'y1', ('y0', '1'): 'y1', ('y1', '0'): 'y0', ('y1', '1'): 'y0'}
new_d = {((c, d), b):(a, e) for ([c, b], a), ([d, _], e) in zip(d1.items(), d2.items())}
輸出:
{(('x0', 'y0'), '0'): ('x0', 'y1'), (('x0', 'y0'), '1'): ('x1', 'y1'), (('x1', 'y1'), '0'): ('x1', 'y0'), (('x1', 'y1'), '1'): ('x0', 'y0')}
但是,此解決方案僅適用于 Python3.7。要在任何其他版本中使用,請考慮collections.OrderedDict將該結(jié)構(gòu)用作或?qū)崿F(xiàn)為元組列表,以確保始終進行正確的配對

TA貢獻1890條經(jīng)驗 獲得超9個贊
我不太確定你在說什么,但以下內(nèi)容與你所描述的類似:
a = {('x0', '0'): 'x0', ('x0', '1'): 'x1', ('x1', '0'): 'x1', ('x1', '1'): 'x0'}
b = {('y0', '0'): 'y1', ('y0', '1'): 'y1', ('y1', '0'): 'y0', ('y1', '1'): 'y0'}
{((x[0], y[0]), x[1]): (a[x], b[y]) for x, y in zip(a.keys(), b.keys())}
>> {(('x0', 'y0'), '0'): ('x0', 'y1'), (('x0', 'y0'), '1'): ('x1', 'y1'), (('x1', 'y1'), '0'): ('x1', 'y0'), (('x1', 'y1'), '1'): ('x0', 'y0')}

TA貢獻1859條經(jīng)驗 獲得超6個贊
在 Python 3.7 之前,dict.items沒有排序,但這并不意味著您不能自己排序!
確認它是無序的(Python 3.5)
In [132]: list(zip(x.items(), y.items()))
Out[132]:
[((('x0', '0'), 'x0'), (('y0', '1'), 'y1')),
((('x1', '0'), 'x1'), (('y1', '0'), 'y0')),
((('x0', '1'), 'x1'), (('y0', '0'), 'y1')),
((('x1', '1'), 'x0'), (('y1', '1'), 'y0'))]
明確訂購
In [129]: list(zip(sorted(x.items()), sorted(y.items())))
Out[129]:
[((('x0', '0'), 'x0'), (('y0', '0'), 'y1')),
((('x0', '1'), 'x1'), (('y0', '1'), 'y1')),
((('x1', '0'), 'x1'), (('y1', '0'), 'y0')),
((('x1', '1'), 'x0'), (('y1', '1'), 'y0'))]
創(chuàng)建您的新 dict
In [131]: {((x0, y0), x1): (x, y) for ((x0, x1), x), ((y0, y1), y) in zip(sorted(x.items()), sorted(y.items()))}
Out[131]:
{(('x0', 'y0'), '0'): ('x0', 'y1'),
(('x0', 'y0'), '1'): ('x1', 'y1'),
(('x1', 'y1'), '0'): ('x1', 'y0'),
(('x1', 'y1'), '1'): ('x0', 'y0')}
添加回答
舉報