Python:从字典中删除项
我有一本包含列表的词典,例如:Python:从字典中删除项,python,list,dictionary,Python,List,Dictionary,我有一本包含列表的词典,例如: dict1 = {'age' : [14, 15, 17, 16], 'height' : [158, 162, 159, 179]} 我想用一个特定项的条件遍历这个字典,然后返回一个没有相关值的字典 例如:条件为“年龄>15岁”。我希望返回: {'age' : [17, 16], 'height' : [159, 179]} (请注意,顺序是守恒的) 你知道我怎么才能得到这个吗?我认为使用条件表达式是可能的,但这对我来说仍然是一个迷
dict1 = {'age' : [14, 15, 17, 16],
'height' : [158, 162, 159, 179]}
我想用一个特定项的条件遍历这个字典,然后返回一个没有相关值的字典
例如:条件为“年龄>15岁”。我希望返回:
{'age' : [17, 16], 'height' : [159, 179]}
(请注意,顺序是守恒的)
你知道我怎么才能得到这个吗?我认为使用条件表达式是可能的,但这对我来说仍然是一个迷
谢谢。:) 您可以通过词典理解来实现这一点:
dict1 = {i: [dict1[i][j] for j in range(len(dict1[i])) if dict1['age'][j] > 15] for i in dict1.keys()}
对于旧字典中的每个键,都会在新字典中创建一个条目,同时会将一个新列表映射到此键,该列表将基于具有指定条件的所需键的旧列表进行构造和筛选
如果您真的想为函数提供一个键和一个条件,这就有点棘手了。假设您只有字符串键,这样的函数可以实现如下:
def subDict(dictionary, key, condition):
condition = "dictionary['"+key+"'][j] "+condition
return {i: [dictionary[i][j] for j in range(len(dictionary[i])) if eval(condition)] for i in dictionary.keys()}
print(subDict(dict1, "age", "> 15"))
import pandas as pd
df = pd.DataFrame(dict1)
print(df[df["age"] > 15])
但是,由于用户输入是直接计算的,因此使用eval()
容易出错,因此在遇到更复杂的条件时,函数可能不是很灵活
在pandas DataFrame中实现,您的数据将非常适合以下数据帧:
def subDict(dictionary, key, condition):
condition = "dictionary['"+key+"'][j] "+condition
return {i: [dictionary[i][j] for j in range(len(dictionary[i])) if eval(condition)] for i in dictionary.keys()}
print(subDict(dict1, "age", "> 15"))
import pandas as pd
df = pd.DataFrame(dict1)
print(df[df["age"] > 15])
输出:
age height
2 17 159
3 16 179
试试这个:
#initial dict
d = {'age' : [14, 15, 17, 16], 'height' : [158, 162, 159, 179]}
#get indices with values greater than 15
indices = [index for index,value in enumerate(d['age']) if value > 15]
#create list with values in indices
l = [[v for i, v in enumerate(d['age']) if i in indices], [v for i, v in enumerate(d['height']) if i in indices]]
#create list with dict keys
k = d.keys()
#zip dict keys
d= dict(zip(k, l))
print d
你试过什么?看看熊猫,你可以用
tmp=pandas.DataFrame(dict1)来实现这一点;tmp.loc[tmp.age>15]