2016-10-18 53 views
3

我希望從當前輸出中刪除所有大括號。我的電流輸出,如下圖所示:如何刪除字典詞典中的所有大括號

{'Chin PTE LTD': {'Carrot Cake': 22, 'Chocolate Cake': 12, 'Beer': 89}, 'COQ 
SEAFOOD': {'GRILLED AUSTRALIA ANGU': 1, 'CRISPY CHICKEN WINGS': 1 
}} 

我當前的代碼如下所示:

for merchant, product, quantity in big_list: 
    d[merchant][product] += quantity 

print ({ k:dict(v) for k,v in d.items() }) 

我想要的輸出:

'Chin PTE LTD': 'Carrot Cake': 22, 'Chocolate Cake': 12, 'Beer': 89, 'COQ 
    SEAFOOD': 'GRILLED AUSTRALIA ANGU': 1, 'CRISPY CHICKEN WINGS': 1 

正如我還是新的蟒蛇,我可能會問如果我想刪除字典字典中的所有大括號。我的理想輸出是否可以實現?如果是這樣,我該怎麼做呢?任何建議/想法,將不勝感激。謝謝。

+0

第一O項f你爲什麼要這麼做..而你想要的輸出是字符串還是你期望的數據結構。 –

+0

@AjayPal我想刪除大括號,因爲如果演示的目的。爲了澄清,我期望的輸出是字符串格式。謝謝。 – user3271404

回答

1

可以通過先轉換字典中的字符串,然後用空字符串替換所有的括號內做到這一點:

d = {'Chin PTE LTD': {'Carrot Cake': 22, 'Chocolate Cake': 12, 'Beer': 89}, 'COQSEAFOOD': {'GRILLED AUSTRALIA ANGU': 1, 'CRISPY CHICKEN WINGS': 1}} 

print(str(d).replace("{","").replace("}", "")) 

,它將打印你在找什麼:

'Chin PTE LTD': 'Carrot Cake': 22, 'Chocolate Cake': 12, 'Beer': 89, 'COQSEAFOOD': 'GRILLED AUSTRALIA ANGU': 1, 'CRISPY CHICKEN WINGS': 1 
+0

偉大的解決方案。謝謝。 =) – user3271404

+0

@ user3271404很樂意幫忙!請記住字典沒有排序,所以如果你想讓這個列表始終處於相同的順序,你需要使用不同的對象。 – enderland

0

構建像這樣

d = {'Chin PTE LTD': {'Carrot Cake': 22, 'Chocolate Cake': 12, 'Beer': 89}, 'COQ SEAFOOD': {'GRILLED AUSTRALIA ANGU': 1, 'CRISPY CHICKEN WINGS': 1}} 

st = ', '.join('%r: %s' % (k, ', '.join('%r: %r' % (sk, sv) for sk, sv in v.items())) for k, v in d.items()) 
print(st) 

字符串此代碼建立首先遍歷字符串外字典。它將鍵添加到字符串(加上符合格式要求的':')。然後它迭代內部字典並以相同的方式附加鍵和值。它使用%r格式說明符,這意味着要打印的元素使用它們的repr函數進行轉換。這爲字符串提供了引號,而無需手動添加它們。

雖然您不能指望被修正的訂單。所以對於不同的運行你會得到稍微不同的訂單。

輸出看起來像

'展PTE LTD': '胡蘿蔔蛋糕':22, '巧克力蛋糕':12, '啤酒':89, 'COQ海鮮': '烤澳大利亞ANGU': 1, '香酥雞翅膀':1

+0

我不明白你的代碼是如何工作的?你解釋你的代碼背後的邏輯嗎?謝謝。 – user3271404

+0

如果還有更多級別的嵌套字典,這將失敗。 – enderland

+0

@enterland是否會有更多級別的嵌套字典?這個問題和示例數據都提到了這一點。事實上,OP代碼顯示了字典是如何構建的,以及它的深度。 –

0
d = {'Chin PTE LTD': {'Carrot Cake': 22, 'Chocolate Cake': 12, 'Beer': 89}, 'COQ SEAFOOD': {'GRILLED AUSTRALIA ANGU': 1, 'CRISPY CHICKEN WINGS': 1}} 

', '.join(['{}: {}'.format(merchant, ', '.join(['{}: {}'.format(product, quantity) for product, quantity in products.items()])) for merchant, products in d.items()]) 

如果你正在使用python2代替python3,更換iteritems

+0

您的解決方案也很酷。請問有什麼區別iteritems和物品?謝謝。 – user3271404

+0

@ user3271404 python2中的項目一次構建完整列表,但iteritems爲您提供了一個迭代器。 在python3中,items是[itemview](https://docs.python.org/3.3/library/stdtypes.html#dict-views) –

+0

明白了。感謝您的解釋。 =) – user3271404

0
import re 
result={'Chin PTE LTD': {'Carrot Cake': 22, 'Chocolate Cake': 12, 'Beer': 89}, 'COQ SEAFOOD': {'GRILLED AUSTRALIA ANGU': 1, 'CRISPY CHICKEN WINGS': 1}} 

expected_output=re.sub("}|{","",str(result)) 
+0

python 2.x ...... – repzero