dictionary - 在同一字典中,python 如何在字典 array 上使用条件来从另一个 array 中拉出元素?

  显示原文与译文双语对照的内容

我有一个数组的字典。


mydict={'a':[45,65,78,32], 'b':['red','blue','green','yellow'], 'c':[3.4, 4.5, 6.5, 7.6]}



mydict['a'] 大于 35 时,我想提取 mydict['b']的元素。 我想要


myarr = ['red','blue','green']



我尝试了-


myarr = [mydict['b'] for num in mydict['a'] num> 35]



我不想进入枚举和保存索引的C++/c 路径,并使用索引。 听起来与Python不同。

我该怎么做?

时间:

你正在接近,你需要使用 zip:


[b for a, b in zip(mydict['a'], mydict['b']) if a> 35]



如果 dict['a']> 35的为以下值,则创建新的list:


mydict={'a':[45,65,78,32], 'b':['red','blue','green','yellow'], 'c':[3.4, 4.5, 6.5, 7.6]}



print([y for x,y in zip_longest(mydict['a'],mydict['b']) if x> 35])



输出:


['red', 'blue', 'green']



可以使用 enumerate 访问相应的索引 i,使用它可以从 mydict['b'] 获取相应的值。


myarr = [mydict['b'][i] for i, num in enumerate(mydict['a']) if num> 35]


# ['red', 'blue', 'green']



如果你愿意使用 pandas,那么这种类型的过滤很容易。

首先将 mydict 传递到DataFrame构造函数:


import pandas as pd


df = pd.DataFrame(mydict)


print(df)


# a b c


#0 45 red 3.4


#1 65 blue 4.5


#2 78 green 6.5


#3 32 yellow 7.6



现在使用布尔掩码筛选符合你条件的列:


print(df[df['a']>35])


# a b c


#0 45 red 3.4


#1 65 blue 4.5


#2 78 green 6.5



要获取所需的输出作为列表,你可以执行以下操作:


myarr = df[df['a']>35]['b'].values.tolist()


print(myarr)


#['red', 'blue', 'green']



...