Python 将字典中的键同步到列表中的多个值

Python 将字典中的键同步到列表中的多个值,python,list,dictionary,Python,List,Dictionary,我有一份清单,格式如下: mydict = { a: [1, 2], b: [2, 2], c: [1, 0], d: [1, 1] } 还有一个只有两个元素的列表 mylist = [x, y] 我像这样读取mydict中的值 for key, values in mydict.items(): print key, values 这张照片 a [1, 2] b [2, 2] c [1, 0] d [1, 1] 但我想要以下输出 x :

我有一份清单,格式如下:

mydict = 

{ a: [1, 2],
  b: [2, 2],
  c: [1, 0],
  d: [1, 1]
}
还有一个只有两个元素的列表

mylist =
    [x, y]
我像这样读取
mydict
中的值

for key, values in mydict.items():
    print key, values
这张照片

  a [1, 2]
  b [2, 2]
  c [1, 0]
  d [1, 1]
但我想要以下输出

x : [1, 2, 1, 1]
y : [2, 2, 0, 1]
也就是说,
mydict
的第一列和
mylist
的第一个值构成了一个字典

所以我修改了这个循环

for key, values in mydict.items():
    newdict = {mylist[0]: mydict[0],
               mylist[1]: mydict[1] 
              }
这给了我想要的输出

x : [1, 2, 1, 1]
y : [2, 2, 0, 1]
但是问题是如果
mylist
mydict
的长度增加,那么它将不起作用,我需要手动添加一个新行

mylist[2]: mydict[2] 
如何确保每次添加
mylist
中的新值时,在不添加新行的情况下自动分配键

PS:mydict中列表值的长度始终等于mylist的长度

编辑:

        0        1
0       a        [1,2],
1       b        [2,2],
2       c        [1,0],   
3       d        [1,1] 
我的输出还应保留
mydict
中键的值

x : [1, 2, 1, 1]
y : [2, 2, 0, 1]
keys: a, b, c, d
多谢各位

编辑:

        0        1
0       a        [1,2],
1       b        [2,2],
2       c        [1,0],   
3       d        [1,1] 

您可以使用邮政编码2

这使用了邮政编码转置:

>>> list(zip(*dct.values()))
[(1, 2, 1, 1), (2, 2, 0, 1)]
如果您想保留钥匙:

dict(zip(['key', 'x', 'y'], zip(*[(i, *j) for i, j in dct.items()])))

# Result
{'key': ('a', 'b', 'c', 'd'), 'x': (1, 2, 1, 1), 'y': (2, 2, 0, 1)}

如果您正在处理大数据,您可以使用
pandas

import pandas as pd

mydict = { 'a': [1, 2],
  'b': [2, 2],
  'c': [1, 0],
  'd': [1, 1]}

df = pd.DataFrame(mydict)

    0   1
a   1   2
b   2   2
c   1   0
d   1   1
然后你可以得到,例如

>>> df.columns = ['x', 'y'] # where ['x', 'y'] is your obj my_list
>>> df.to_dict('list')

{'x': [1, 2, 1, 1], 'y': [2, 2, 0, 1]}

保管钥匙

>>> d = df.to_dict('list')
>>> d.update({'keys':df.index.tolist()})

你能解释一下你在那里做了什么吗?我没有检查它,但我还想在
mydict
中保存和打印
keys
的值,即
a
b
c
你说的保存和打印keys的值是什么意思?我的意思是,在for循环中,我应该能够打印
{'x':(1,2,1),'y':(2,0,1)}
keys:a,b,c,d
你需要更新你的问题,以明确你想要的输出是什么。如果我使用你的方法,我将丢失密钥也是
*dct。值
表示
mydict
?我不知道什么是bigdata,我也不使用它。我的意思是,如果你的列表和dict非常大:)我更喜欢你的方法,因为我现在有1000行直到现在才意识到这更好。我试过你的答案,但不起作用。请检查更新的问题好吗?我添加了
df=pd.DataFrame(mydict.items())
@MaverickD Use
pd.DataFrame(mydict)
,而不是
pd.DataFrame(mydict.items())
:)