使用list元素为.json()对象创建.format()映射?

时间:2014-11-30 23:53:18

标签: python json list string.format

我在response.json

中使用Requests module返回了以下对象
{u'statColumns': [u'apps', u'subOn', u'minsPlayed', u'tackleWonTotal', u'challengeLost', 
u'tackleTotalAttempted'], u'paging': {u'firstRecordIndex': 1, u'resultsPerPage': 1,     u'lastRecordIndex':
1, u'totalPages': 431, u'currentPage': 1, u'totalResults': 431}, u'playerTableStats': 
[{u'positionText': u'Defender', u'rating': 8.37, u'weight': 77, u'playerId': 22079, u'height': 188, 
u'teamId': 32, u'playedPositions': u'-DC-', u'challengeLost': 0.0, u'isManOfTheMatch': False, u'isOpta':
True, u'subOn': 0, u'tackleWonTotal': 2.0, u'tournamentShortName': u'EPL', u'apps': 1, u'teamName':
u'Manchester United', u'tournamentRegionId': 252, u'regionCode': u'gb-nir', u'tournamentRegionCode':
u'gb-eng', u'playedPositionsShort': u'D(C)', u'seasonId': 4311, u'ranking': 1, u'minsPlayed': 90, 
u'tournamentName': u'Premier League', u'isActive': True, u'name': u'Jonny Evans', u'firstName': 
u'Jonny', u'lastName': u'Evans', u'age': 26, u'seasonName': u'2014/2015', u'tournamentId': 2,
u'tackleTotalAttempted': 2.0}]}

此对象有两个元素playerTableStatsstatColumns。可以使用以下代码访问它们:

playerTableStats = response[u'playerTableStats']
statColumns = response[u'statColumns']

如果我将statColumns的内容转换为字符串对象,我可以将其用作.format()语句的一部分来映射playerTableStats。我可以这样做:

var1 = ['one','two','three','four']
var1 = 'u"{',var1[0],'}','{',var1[1],'}','{',var1[2],'}','{',var1[3],'}"'
var1 = ''.join(var1)

var2 = (var1.format(**responser))

print var2

然而,这似乎不是Pythonic,并且没有考虑到这样一个事实:当我从中返回不同的.json对象时,statColumnsplayerTableStats的元素数量会有所不同。同一个网站。

是否有更简洁的方法将statColumns的所有元素都纳入格式:

u"{one}{two}{three}{four}"

由于

1 个答案:

答案 0 :(得分:1)

str.joingenerator expression一起使用:

var2 = ''.join('{' + x + '}' for x in var1)