我有一個字典與字符串和2元組鍵。我想將(x,y)中的所有2元組鍵轉換爲x:y的字符串。這裏是我的數據:只選擇元組的字典鍵?
In [4]:
data = {('category1', 'category2'): {'numeric_float1': {('Green', 'Car'): 0.51376354561039017,('Red', 'Plane'): 0.42304110216698415,('Yellow', 'Boat'): 0.56792298947973241}}}
data
Out[4]:
{('category1',
'category2'): {'numeric_float1': {('Green', 'Car'): 0.5137635456103902,
('Red', 'Plane'): 0.42304110216698415,
('Yellow', 'Boat'): 0.5679229894797324}}}
然而,這是字典輸出我想:創建一個遞歸函數,改變所有的按鍵
{'category1:category2':
{'numeric_float1':
{'Green:Car': 0.5137635456103902,
'Red:Plane': 0.42304110216698415,
'Yellow:Boat': 0.5679229894797324}}}
我修改代碼a previous SO answer。
In [5]:
def convert_keys_to_string(dictionary):
if not isinstance(dictionary, dict):
return dictionary
return dict((':'.join(k), convert_keys_to_string(v)) for k, v in dictionary.items())
convert_keys_to_string(data)
但是我無法獲得避免非元組鍵的函數。因爲它沒有避免非元組鍵,功能修復的2元組密鑰,但打亂了非元組鍵:
Out[5]:
{'category1:category2': {'n:u:m:e:r:i:c:_:f:l:o:a:t:1': {'Green:Car': 0.5137635456103902,
'Red:Plane': 0.42304110216698415,
'Yellow:Boat': 0.5679229894797324}}}
我想餵鴨類型,但。 – TigerhawkT3
我不遵循,如果hasattr(k,'isalpha')'做了issinstance(k,str)'不會呢? –
我不是在問是否是鴨子,而是在聆聽庸醫。 :) – TigerhawkT3