Parse dict of dicts to string
I have a dictionary with following structure :
{1: {'message': u'test', 'user': u'user1'},
2: {'message': u'test2', 'user': u'user2'}}
I'd like to create a string containing values from the inner dictionary in this form :
string = "<span>test1</span><span>user1</span><br />
<span>test2</span>..."
I've tried everything from dict.keys()
, dict.values开发者_StackOverflow中文版()
, (k,v) for k, v in dict
but I cannot make it work. What is the proper way ?
>>> d={1: {'message': u'test', 'user': u'user1'}, 2: {'message': u'test2', 'user': u'user2'}}
>>> ''.join('<span>%(message)s</span><span>%(user)s</span><br/>' % v for k,v in sorted(d.items()))
u'<span>test</span><span>user1</span><br/><span>test2</span><span>user2</span><br/>'
How about something like this:
dod = {1: {'message': u'test', 'user': u'user1'}, 2: {'message': u'test2', 'user': u'user2'}}
string = ""
for v in dod.values():
string = string + "<span>"+v['message'] + "</span><span>" + v['user'] + "</span><br />\n"
Or, in much better python style
string = '\n'.join( ("<span>"+v['message'] + "</span><span>" + v['user'] + "</span><br />" for v in dod.values()) )
If you need the users sorted, you could have
ksorted = sort(dod.keys())
for k in ksorted:
v = dod[k]
string = string + "<span>"+v['message'] + "</span><span>" + v['user'] + "</span><br />\n"
data = {1: {'message': u'test', 'user': u'user1'}, 2: {'message': u'test2', 'user': u'user2'}}
strg = "".join(["<span>%s</span><span>%s</span><br />" % (item['message'], item['user']) for item in x.values()])
print strg
like this?
>>> d={1: {'message': u'test', 'user': u'user1'}, 2: {'message': u'test2', 'user': u'user2'}}
>>> l=[]
>>> for k,v in d.iteritems():
... l.append('%s%s%s' % ('<span>', '</span><span>'.join(v.values()),'</span>'))
...
>>> print '<br/>\n'.join(l)
<span>test</span><span>user1</span><br/>
<span>test2</span><span>user2</span>
精彩评论