有人能帮我让Python代码不那么难看吗?在应用程序上查找Facebook好友,而不是在应用程序上查找
该代码获取使用我们应用程序的用户的所有Facebook好友,并返回一个字典,其中包含他们在数据库中的id键和默认连接级别的值 该代码还应返回所有未使用我们应用程序的用户Facebook好友 我把fb_id_on_应用程序做成了一个包含facebook_id密钥的字典,这样我就可以利用O1查找字典的时间。如果我把它做成一个列表,它会是一个,其中n是列表的大小,用来检查值是否在其中有人能帮我让Python代码不那么难看吗?在应用程序上查找Facebook好友,而不是在应用程序上查找,python,django,facebook,dictionary,Python,Django,Facebook,Dictionary,该代码获取使用我们应用程序的用户的所有Facebook好友,并返回一个字典,其中包含他们在数据库中的id键和默认连接级别的值 该代码还应返回所有未使用我们应用程序的用户Facebook好友 我把fb_id_on_应用程序做成了一个包含facebook_id密钥的字典,这样我就可以利用O1查找字典的时间。如果我把它做成一个列表,它会是一个,其中n是列表的大小,用来检查值是否在其中 我相信有更好的方法可以做到这一点有什么想法吗?我们也在使用django框架 我现在只能看到一些小的改进,特别是在格式方
我相信有更好的方法可以做到这一点有什么想法吗?我们也在使用django框架 我现在只能看到一些小的改进,特别是在格式方面:-:
DEFAULT_CONNECTION_LEVEL = 10
# Up to a whole day
UPDATE_FRIENDS_EVERY_N_MINUTES = 360
def find_friends_on_app(friends):
"""
Checks each facebook id to find which facebook friends
use our app
"""
facebook_ids = [friend["id"] for friend in friends]
dt_friends = User.objects.filter(
facebook_id__in=facebook_ids)
friends_on_app = {friend.id: DEFAULT_CONNECTION_LEVEL for friend in
dt_friends}
fb_id_on_app = {friend.facebook_id: "value" for friend in
dt_friends}
friends_not_on_app = \
[{'Name': friend.get("name"),
'id': friend.get("id")} for friend in friends if
fb_id_on_app.get(friend.get("id")) is None]
return friends_not_on_app, friends_on_app
事实上,丑陋取决于过度使用friend和id及其变体,这使得很难区分每一步的friendxyz是什么,以及它的['id'],它的'.id',它的'.facebook_-id'之间的区别。。。如果没有对过度使用所掩盖的意图语义的深入理解,我无法修复这种丑陋- 这可能是一个更好的问题。嘿,谢谢,我做了你的改变。我喜欢使用集合,但我不知道它们是带伪值的字典,这基本上是我以前做过的。由于Pep8,格式有点奇怪。是的,十多年前,当我实现set的第一个版本时,它完全建立在dict之上——现在它是优化的C代码,不仅在适当的时候比dict更可读,而且还节省了一些内存。顺便说一句,我不知道我在任何地方违反了政治公众人物第8条。。。?
def find_friends_on_app(friends):
friend_ids = User.objects.filter(facebook_id__in=[friend["id"] for friend in friends])
friends_on_app = {friend.id: DEFAULT_CONNECTION_LEVEL for friend in friend_ids}
fb_id_on_app = set(f.facebook_id for f in friend_ids)
friends_not_on_app = [{'Name': friend.get("name"), 'id': friend.get("id")}
for friend in friends if friend.get('id') not in fb_id_on_app]
return friends_not_on_app, friends_on_app