2015-04-26 1 views
4

У меня есть функция, которая возвращает json-форматированный набор данных. Вот пример:Как я могу получить доступ к элементам внутри списка в словаре python?

[{u'category': [u'Transfer', u'Withdrawal', u'ATM'], u'category_id': u'21012002', u'_account': u'XARE85EJqKsjxLp6XR8ocg8VakrkXpTXmRdOo', u'name': u'ATM Withdrawal', u'amount': 200, u'meta': {u'location': {u'city': u'San Francisco', u'state': u'CA'}}, u'date': u'2014-07-21', u'score': {u'location': {u'city': 1, u'state': 1}, u'name': 1}, u'_id': u'0AZ0De04KqsreDgVwM1RSRYjyd8yXxSDQ8Zxn', u'type': {u'primary': u'special'}, u'pending': False}] 

for trans in foodie_data: 
      print 'Name={},Amount={},Date={}, Categories ={}\n'.format(trans['name'],trans['amount'],trans['date'],trans['category']) 

Этот сценарий печатает:

Name=ATM Withdrawal,Amount=200,Date=2014-07-21,Categories=[u'Transfer', u'Withdrawal', u'ATM'] 

Я хочу, чтобы вернуться Категории как строка, а не список:

Name=ATM Withdrawal,Amount=200,Date=2014-07-21,Categories='Transfer, Withdrawal,ATM'] 

Что наиболее эффективный способ сделать так?

+1

' ''. присоединиться (транс [ 'категории']) '? – Shashank

ответ

2

Два быстро исправить в коде должны решить это

  1. Присоединитесь к списку, возвращаемому trans['category'], разделенным запятой, так что это строка, а не строка представления n списка.
  2. Quote спецификатор формата для category т.е. Categories =\'{}\'

    for trans in foodie_data: 
        print 'Name={},Amount={},Date={}, Categories =\'{}\'\n'.format(
        trans['name'], 
        trans['amount'], 
        trans['date'], 
        ', '.join(trans['category'])) 
    
+0

Спасибо, ребята !!!! Работает отлично! – Mitch

2

Вы можете присоединиться к элементам категории:

>>> categories = [u'Transfer', u'Withdrawal', u'ATM'] 
>>> ",".join(categories) 
u'Transfer,Withdrawal,ATM' 

и использовать его вместо того, чтобы при печати свой вывод:

",".join(trans['category']) 
0

Вы также можете ты ДИКТ непосредственно str.format, чтобы получить доступ к остальным значениям:

for trans in foodie_data: 
    print "Name={name},Amount={amount},Date={date}," \ 
     "Categories='{}'\n".format(",".join(trans["category"]),**trans) 


Name=ATM Withdrawal,Amount=200,Date=2014-07-21,Categories='Transfer,Withdrawal,ATM' 
Смежные вопросы