当我运行它时,当我期望包含profile_fields中列出的键的新{}
时,它会返回dict
。我做错了什么?
import datetime
user = {'email_optin': False, 'paid': 0, 'location': None, 'account_state': 'enabled', 'ip_address': '1.1.1.1', 'modified_timestamp': 1440107582, 'image': None, 'created': datetime.datetime(2015, 8, 20, 21, 53, 2, 436540), 'website': None, 'public_key': None, 'last_seen': datetime.datetime(2015, 8, 20, 21, 53, 2, 434959), 'full_name': None, 'user_id': 'jk4vv6cucgxtq6s4i3rgmdcwltvva2fl', 'confirmed': False, 'twitter': None, 'email_address': 'h@example.org', 'modified': datetime.datetime(2015, 8, 20, 21, 53, 2, 436554), 'password': '$5$rounds=110000$HnkKE5jWtb1I1cps$dOu0PeijD.enkVd85ofpVpI.1p9wpAsx8fLLSENEuQ1', 'github': None, 'created_timestamp': 1440107582, 'subscription_plan': '', 'user_name': 'xdc'}
profile_fields = [
'location,'
'email_address,'
'full_name,'
'github,'
'image,'
'public_key,'
'twitter,'
'user_id,'
'user_name,'
'website'
]
profile = {k:v for k,v in user.items() if k in profile_fields }
print('profile')
print(profile)
编辑:上面的问题是我十六小时编码日即将结束的消息。
答案 0 :(得分:4)
因为您已将逗号放在引号内而不是外部。您的列表profile_fields
只包含一个字符串文字。
答案 1 :(得分:1)
您可以定义profile_fields列表,如
profile_fields = [
'location', 'email_address', 'full_name',
'github', 'image', 'public_key', 'twitter',
'user_id', 'user_name','website'
]
您可以使用PEP 8
答案 2 :(得分:0)
您的列表存在问题。应该这样,
profile_fields = ['location','email_address','full_name','github','image','public_key','twitter','user_id','user_name','website']
答案 3 :(得分:0)
您的profile_list
实际上应该是这样的:
profile_fields = [
'location',
'email_address',
'full_name',
'github',
'image',
'public_key',
'twitter',
'user_id',
'user_name',
'website'
]
如上所述,逗号应该在之外构成字符串的引号。您当前有一个列表,其中包含一个永远不会匹配user
字典中任何键的单个元素。这是一个简单的解决方法。