- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
长期听众,第一次来电..
我的 Facebook Open Graph API 查询得到了很好的结果:
fbtest = graph.request("/fql", {"q": "SELECT name, page_id, categories, location
FROM page WHERE page_id IN (SELECT page_id FROM page_fan WHERE uid=me())"})
尽管我在 Learning Python the Hard Way 上学习了 Zed 的精彩类(class),我还是新手,需要这些方面的帮助:
我只想请求匹配特定类别的页面,例如“本地企业”,但是因为“类别”是一个列表(并且它没有在 FB 表中编入索引),所以我很难是时候弄清楚了;我假设这是不可能的。
所以我检索了一个人喜欢的所有页面的全部内容,之后我需要对其进行整理。这是我遇到的麻烦:
我如何操作结果(按类别和/或位置过滤,它们都是列表)并将它们以可读格式发送到我的 fbtest.html 文件?
目前我只是在 HTML 中呈现 fbtest 的输出;
self.render("test.html", fbtest=fbtest)
这很丑陋:
fbtest: {u'data': [{u'page_id': 8495417058L, u'name': u'Mat Zo', u'categories': [], u'location': {u'street': u'', u'zip': u''}}, {u'page_id': 9980651805L, u'name': u'deadmau5', u'categories': [], u'location': {u'street': u'', u'zip': u''}}, {u'page_id': 6209079710L, u'name': u'Ultra Records', u'categories': [], u'location': {u'street': u'', u'zip': u''}}, {u'page_id': 12609724042L, u'name': u'Oceanlab', u'categories': [], u'location': {u'street': u'', u'zip': u''}}, etc
一旦我尝试操纵该列表,我就可以发送单个结果(如页面匹配名称 =“thesocialbusiness”),但不能发送我要查找的一系列结果。我的愿景是拥有一个漂亮的图画书缩略图页面,并按位置分类和排序。
谢谢,节日快乐,
-詹姆斯
最佳答案
如果我没理解错的话,你只是想在这里过滤最终结果?如果您还没有,请继续将 json 字符串转换为 python 对象
import json
resp = json.loads(fql_resp)
data = resp['data']
loads
代表load string,这是您将从服务中获取的内容。从这里你有几个选择。一种选择是使用内置的 filter
如果您事先知道您想要什么类别。以下面的数据集为例
objs = [{'_id': 1, 'categories': ['a', 'b', 'c']},
{'_id': 2, 'categories': ['b']},
{'_id': 3, 'categories': ['c']}]
您可以像这样过滤仅包含 b
类别的结果
def f(obj):
return 'b' in obj['categories']
filtered_objs = filter(f, objs)
print(filtered_objs)
# outputs:
# [{'_id': 1, 'categories': ['a', 'b', 'c']},
# {'_id': 2, 'categories': ['b']}]
如果你想要一个可重用的函数来过滤不同的类别,你可以这样做
def filter_objs(objs, category):
result = []
for obj in objs:
if category in obj['categories']:
result.append(category)
return result
filtered_objs = filter_objs(objs, 'b')
最后,您可以只使用列表理解,根据需要内联或在 filter_objs 函数中使用。
filtered_objs = [obj for obj in objs if 'b' in obj['categories']]
所以有很多方法可以过滤结果,但第一步是使用json.loads
关于python - 如何按类别和/或位置解析 Facebook 页面的 FQL 响应? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8621634/
我在 StackOverflow 和其他地方看到了很多与此类似的问题,但没有一个直接解决我的问题。我正在 THREE.js 中使用凸包生成器生成 n 边多面体。我想将方形纹理映射到每个多面体的每个面上
我是一名优秀的程序员,十分优秀!