2012-05-13 40 views
10
{'action_name':'mobile signup', 
    'functions':[{'name':'test_signUp', 
        'parameters':{'username':'[email protected]', 
           'password':'12345', 
           'mobileLater':'123454231', 
           'mobile':'1e2w1e2w', 
           'card':'1232313', 
           'cardLater':'1234321234321'}}], 
    'validations':[ 
      {'MOB_header':'My stores'}, 
      {'url':"/stores/my"}]} 

Tôi muốn có được tất cả các phím & giá trị của dict này như một danh sách (trong số các giá trị mà họ dict hoặc mảng)cách nhận tất cả các khóa & giá trị trong dict lồng nhau của danh sách-dicts và dicts?

kết quả in sẽ như thế này:

action name = mobile signup 
name = test_signUp 
username : [email protected] 
password : 12345 
mobileLater: 123454231 
mobile : 1e2w1e2w 
card : 1232313 
cardLater : 1234321234321 
MOB_header : My stores 
+0

Có thể [this] (http://stackoverflow.com/questions/1679384/converting-python-dictionary-to-list) sẽ trợ giúp? – Hindol

+0

Và bạn đã thử những gì? Cho chúng tôi xem một số mã. – Vikas

+0

Đối với toàn bộ tính tổng quát, bạn nên sử dụng 'else:' thay vì 'elif isinstance (giá trị, str):'. – huon

Trả lời

8

Bạn có thể muốn sử dụng hàm đệ quy để trích xuất tất cả các cặp key, value.

def extract(dict_in, dict_out): 
    for key, value in dict_in.iteritems(): 
     if isinstance(value, dict): # If value itself is dictionary 
      extract(value, dict_out) 
     elif isinstance(value, unicode): 
      # Write to dict_out 
      dict_out[key] = value 
    return dict_out 

Thứ gì đó thuộc loại này. Tôi đến từ nền C++ vì vậy tôi đã phải google cho tất cả các cú pháp.

+0

Có thể tốt hơn để thay thế dòng 'elif isinstance (giá trị, unicode):' bằng 'else:'. – SparkAndShine

+0

@sparkandshine IMHO rõ ràng là tốt hơn là ngầm. Phần 'isinstance' cũng hoạt động như tài liệu. – Hindol

+0

Không thực sự hoạt động với các danh sách (ngay cả trong ví dụ của tác giả), phải không? Phải đi qua danh sách quá. – antonavy

Các vấn đề liên quan