我有个白痴:
d1 = {"date":["2019-11","2019-11","2019-12","2019-12","2020-01","2020-01"],
"shares":[28,16,5,10,1,1],
"target":["INSTAGRAM","TEXT","INSTAGRAM","TEXT","INSTAGRAM","TEXT"]
}我希望只为target = INSTAGRAM过滤所有的target = INSTAGRAM字典,而不使用pandas。这就是预期的结果:
{"date":["2019-11","2019-12","2020-01"],
"shares":[28,5,1],
"target":["INSTAGRAM","INSTAGRAM","INSTAGRAM"]
}发布于 2020-01-10 14:00:08
from collections import defaultdict
d = defaultdict(list)
for i, target in enumerate(d1['target']):
if target == 'INSTAGRAM':
for k,v in d1.items():
d[k].append(v[i])print(d)
defaultdict(list,
{'date': ['2019-11', '2019-12', '2020-01'],
'shares': [28, 5, 1],
'target': ['INSTAGRAM', 'INSTAGRAM', 'INSTAGRAM']})如果您想避免任何导入并使用python的dict类:
d = dict()
for i, target in enumerate(d1['target']):
if target == 'INSTAGRAM':
for k,v in d1.items():
if k in d.keys():
d[k].append(v[i])
else:
d[k] = [v[i]]发布于 2020-01-10 14:07:53
这应该能起作用:
def filter_by_key(key, value, _dict):
""" Filter a dictionary by it's key value
:param str key: Dictionary key to inspect
:param str value: Value to look for inside the dictionary key
:param dict _dict: Dictionary to inspect
:return: Dictionary with filter applied
"""
indexes = [index for index, item in enumerate(_dict[key])
if _dict[key][index] == value]
result_dict = {}
for key, value in a.iteritems():
result_dict[key] = [_dict[key][index] for index in indexes]
return result_dicta = {"date":["2019-11","2019-11","2019-12","2019-12","2020-01","2020-01"],
"shares":[28,16,5,10,1,1],
"target":["INSTAGRAM","TEXT","INSTAGRAM","TEXT","INSTAGRAM","TEXT"]
}
result = filter_by_key('target', 'INSTAGRAM', a)https://stackoverflow.com/questions/59683034
复制相似问题