2016-11-03 34 views
0

我想創建一個字典的形式的字典:創建具有兩個強制性鍵,其中一個有兩個可選鍵

my_dict = dict.fromkeys((["name", "id"] , "value"), 10)

因此,爲了訪問元素10,我既可以類型:

my_dict["name","value"] >> 10 

mydict["id", "value"] >> 10 

我認爲這是非常具有說服力的,兩個鍵是強制性的,但對於第一個可以選擇使用哪一個。這可能嗎?

+3

像這樣'my_dict = {(「id」,「value」):10,(「name」,「value」):10}'是最接近你可以得到沒有重寫方法。 –

+0

根據[文檔](https://docs.python.org/2/tutorial/datastructures.html#dictionaries): * .. keys,它可以是任何不可變類型;字符串和數字始終可以是鍵。如果元組僅包含字符串,數字或元組,則可以將它們用作鍵; * – maze88

+0

@EliKorvigo我想用for循環創建鍵,這是否可以使用您的語法? – D1X

回答

0

而是黑客dict的接口或寫醜的東西(我在評論中所展示),你最好改變你的設計一點:

def get_any(dictionary, keys): 
    try: 
     return next(filter(bool, (dictionary.get(key) for key in keys))) 
    except StopIteration: 
     raise KeyError 

group = ("name", "value"), ("id", "value") 
dict = {("id", "value"): 10} 
get_any(dict, group) 

這樣,您就可以找到價值一組鍵,至少有一個出現在詞典中。

相關問題