Python 字典储存成对的词。谁存储三倍?

Python 字典储存成对的词。谁存储三倍?,python,dictionary,store,Python,Dictionary,Store,我们将使用字典存储,例如: a={"breakfast":"banana","lunch":"fish","dinner":"soup"} 如果要在每个键值集旁边添加时间属性,您的方法是什么。当然不是: a={"8AM":"breakfast":"banana","2PM":"lunch":"fish","8PM":"dinner":"soup"} 然后我想使用一个或多个键来访问一个值 也许通过使用列表做一个技巧?您可以使用元组作为字典键: a = {("8AM", "breakfast")

我们将使用字典存储,例如:

a={"breakfast":"banana","lunch":"fish","dinner":"soup"}
如果要在每个键值集旁边添加时间属性,您的方法是什么。当然不是:

a={"8AM":"breakfast":"banana","2PM":"lunch":"fish","8PM":"dinner":"soup"}
然后我想使用一个或多个键来访问一个值


也许通过使用列表做一个技巧?

您可以使用元组作为字典键:

a = {("8AM", "breakfast"): "banana",
     ("2PM", "lunch"): "fish",
     ("8PM", "dinner"): "soup",
    }

可以将元组用作字典键:

a = {("8AM", "breakfast"): "banana",
     ("2PM", "lunch"): "fish",
     ("8PM", "dinner"): "soup",
    }

使用元组作为键的字典:

>>> a={("8AM","breakfast"):"banana",("2PM","lunch"):"fish",("8PM","dinner"):"soup"}
>>> a["8AM","breakfast"]
'banana'
或者,如果您只想使用餐名查找时间和食物:

>>> a={"breakfast":("8AM","banana"),"lunch":("2PM","fish"),"dinner":("8PM","soup")}
>>> a["breakfast"]
('8AM', 'banana')

使用元组作为键的字典:

>>> a={("8AM","breakfast"):"banana",("2PM","lunch"):"fish",("8PM","dinner"):"soup"}
>>> a["8AM","breakfast"]
'banana'
或者,如果您只想使用餐名查找时间和食物:

>>> a={"breakfast":("8AM","banana"),"lunch":("2PM","fish"),"dinner":("8PM","soup")}
>>> a["breakfast"]
('8AM', 'banana')

由于您希望使用字典和可能的列表,我建议您确定主键是什么,并创建如下嵌套结构:

a = {
    'breakfast': {
        'time': "8AM",
        'items': ['banana', 'yogurt']
    },
    'lunch': {
        'time': '2PM',
        'items': ['fish', 'tartar sauce']
    },
    'dinner': {
        'time': '8PM',
        'items': ['soup', 'salad']
    }
}
每顿饭的时间是可变的,但我们都知道我们吃早餐、午餐和晚餐,或者至少我们应该吃。执行此操作后,您可以确定消耗的时间和项目:

a['breakfast']['time']
'8AM'

a['breakfast']['items']
['banana', 'yogurt']

由于您希望使用字典和可能的列表,我建议您确定主键是什么,并创建如下嵌套结构:

a = {
    'breakfast': {
        'time': "8AM",
        'items': ['banana', 'yogurt']
    },
    'lunch': {
        'time': '2PM',
        'items': ['fish', 'tartar sauce']
    },
    'dinner': {
        'time': '8PM',
        'items': ['soup', 'salad']
    }
}
每顿饭的时间是可变的,但我们都知道我们吃早餐、午餐和晚餐,或者至少我们应该吃。执行此操作后,您可以确定消耗的时间和项目:

a['breakfast']['time']
'8AM'

a['breakfast']['items']
['banana', 'yogurt']
使用:

>>>a['8AM']['breakfast']
'banana'
其他:

def r(_d,_target):
    result = []
    for k, v in _d.items():
        if(k == _target):
            if type(v) == type({}):
                for x in v.keys():
                    result.append(v[x])
            else:
                result.append(v)
        if type(v) == type({}):
            r2 = r(v,_target)
            if len(r2) > 0:
                for l in r2:
                    result.append(l)
    return result

>>> r(a,"breakfast")
['banana']
>>> r(a,"8AM")
['banana']
>>> r(a,"dinner")
['soup']
使用:

>>>a['8AM']['breakfast']
'banana'
其他:

def r(_d,_target):
    result = []
    for k, v in _d.items():
        if(k == _target):
            if type(v) == type({}):
                for x in v.keys():
                    result.append(v[x])
            else:
                result.append(v)
        if type(v) == type({}):
            r2 = r(v,_target)
            if len(r2) > 0:
                for l in r2:
                    result.append(l)
    return result

>>> r(a,"breakfast")
['banana']
>>> r(a,"8AM")
['banana']
>>> r(a,"dinner")
['soup']

您可以使用多少个键来访问一个值?举一个例子,使用一个字典,其中值的类型是tuple多少键可以用来访问一个值?举一个例子,使用一个字典,其中value是tupleIn类型。在这种情况下,您必须编写整个tuple。如果我们只想使用早餐而不是8AM访问值,该怎么办?请参见我的编辑,将元组移动到值而不是键。@une这就是为什么要求您输入键的原因。在这种情况下,您必须写入整个元组。如果我们只想使用早餐而不是8AM访问值,该怎么办?请参见我的编辑,将元组移动到值而不是键。@une这就是为什么问你有关键的问题是的,我同意,但问题明确地引用了词典和列表是的,我同意,但问题明确地引用了词典和列表