我有一个遍历字典列表的函数,将指定的键值对返回到新的字典列表中:
data = [
{'user': {'login': 'foo1', 'id': 'bar2'}, 'body': 'Im not sure', 'other_field': 'value'},
{'user': {'login': 'foo2', 'id': 'bar3'}, 'body': 'Im still not sure', 'other_field': 'value'},
]
filtered_list = []
keys = ['user','body']
for i in data:
filt_dict = dict((k, i[k]) for k in keys if k in i)
filtered_list.append(filt_dict)
user
键包含一个名为login
的子键;如何将其添加到键参数列表中,而不是键user
中?
示例输出:
filtered_list = [
{'login': 'foo1', 'body': 'Im not sure'},
{'login': 'foo2', 'body': 'Im still not sure'},
]
答案 0 :(得分:4)
这个怎么样?假设您要迭代的字典中确实存在密钥链。
设置
>>> from functools import reduce
>>> data = [{'user': {'login': 'foo1', 'id': 'bar2'}, 'body': 'Im not sure', 'other_field': 'value'},
... {'user': {'login': 'foo2', 'id': 'bar3'}, 'body': 'Im still not sure', 'other_field': 'value'}]
>>> keys = [('user', 'login'), ('body',)]
解决方案
>>> [{ks[-1]: reduce(dict.get, ks, d) for ks in keys} for d in data]
[{'body': 'Im not sure', 'login': 'foo1'}, {'body': 'Im still not sure', 'login': 'foo2'}]
答案 1 :(得分:1)
如果确定,列表中的所有元素(字典)都将具有您指定的键,那么快速解决方案可能是:
-webkit-overflow-scrolling: touch;
对于丢失键没有错误处理。