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 Usepd.DataFrame(mydict)
,而不是pd.DataFrame(mydict.items())
:)