2013-07-27 162 views
0

比方說,我有一本字典,看起來像這樣:添加到字典的Python中的子字典,以斷子詞典的關鍵

test = {1: {'los angeles': ['playlist1', 'playlist2']}, 2: {'houston': ['playlist']}} 

在這段代碼中,我要添加到屬於「洛杉磯數組',基本上附加到它。有沒有辦法執行一個動作,其中1被聲明爲通配符?我想要做這樣的事情:

test[_]['los angeles'].append('playlist3') 

這將導致:

test = {1: {'los angeles': ['playlist1', 'playlist2', 'playlist3']}, 2: {'houston': ['playlist']}} 
+0

你可以澄清更多的你的意思是1被宣佈爲通配符? – RussW

回答

1

我不知道我是否完全理解這個問題,但是如果我可以試試看。

外部字典中的整數鍵似乎是什麼阻止你。

看來你有城市名稱一些數據集,你想這些字符串映射到其他兩個數據集,城市數字城市播放列表

而不是在一個多維字典中這樣做,你可以使用單獨的字典來單獨映射。

city_playlists = {'los angeles':['playlist1', 'playlist2'], 
        'houston':['playlist']} 
city_names = {1:'los angeles', 
       2:'houston'} 

然後數據檢索和更新更直截了當。

city_playlists['los angeles'].append('playlist3') 

如果我明白你的「通配符」是什麼意思

wildcard = random.randint(1, len(city_names)) 
name = city_names[wildcard] 
city_playlists[name].append('newplaylist') 

您也可以使用映射城市數字列表城市名稱如列表有索引,然後使用random.choice從列表中抽出一個隨機的城市名稱。

1

有沒有這樣的通配符性的東西。你應該做手工:

for k in test: 
    if 'los angeles' in test[k]: 
     test[k]['los angeles'].append('playlist3') 

或者:

test[next(k for k in test if 'los angeles' in test[k])]['los angeles'].append('playlist3') 

一個班輪版本會拋出StopIteration異常,如果有與「洛杉磯登錄」鍵沒有字典。它只會更新匹配的第一個字典。