如何在两个字典中压缩值

时间:2018-11-21 22:16:23

标签: python dictionary zip

我有2个字典:

// main.vue
<navigation :button-left="goback()"></navigation>



// navigation.component.vue
...
props: ["buttonLeft"],
...
methods: {
  goback() {
    console.log('Run this.');
  },
},
...

{('x0', '0'): 'x0', ('x0', '1'): 'x1', ('x1', '0'): 'x1', ('x1', '1'): 'x0'}

并且我想将它们压缩成这样的方式:

{('y0', '0'): 'y1', ('y0', '1'): 'y1', ('y1', '0'): 'y0', ('y1', '1'): 'y0'}

实现此目标的最佳方法是什么?

3 个答案:

答案 0 :(得分:2)

我不确定您正在做什么,但是以下内容与您所描述的类似:

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')}

答案 1 :(得分:1)

在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或将结构实现为元组列表,以确保始终出现正确的配对。

答案 2 :(得分:0)

正如@ Ajax1234所述,在Python 3.7之前,<div class="wrapper"> <div class="red"> </div> <div class="yellow"> </div> <div class="blue"> </div> </div>没有排序,但这并不意味着您不能自己对它进行排序!

确认它是无序的(Python 3.5)

margin-left: auto

明确订购

dict.items

创建新的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'))]