嘿,所以我创建了这个字典,并希望能够基于另一个元素访问其中一个元素。因此,在主词典中,我有一个词典,其中包含“ name”和“ days”,并基于用户输入(他们将输入日期),并且我想输出名称。
{1: {"name": "Leo", "days": range(1, 61)}, 2: {"name": "Gemini", "days": range(61, 122)}, ....
因此,在上面的示例中,如果用户输入25,我想输出“ Leo”。我怎样才能做到这一点?最初,我想到了if语句,但是有没有一种方法可以基于“ days”子元素访问“ name”子元素?
因此,如果输入为25
,
我希望输出为Leo
答案 0 :(得分:0)
您可以浏览字典中的元素
dict.items()
例如,使用列表理解:
zodiac_signs = {1: {"name": "Leo", "days": range(1, 61)}, 2: {"name": "Gemini", "days": range(61, 122)}}
zodiac_matching_day = [zodiac['name'] \
for n, zodiac in zodiac_signs.items() \
if 25 in zodiac['days']]
if len(zodiac_matching_day) > 0:
print(zodiac_matching_day[0])
答案 1 :(得分:0)
您可以这样操作:
我已将您的字典D命名为D,并将其限制为2个元素。
D = {1: {"name": "Leo", "days": range(1, 61)}, 2: {"name": "Gemini", "days": range(61, 122)}}
我们可以定义一个lambda函数来满足您的需求:
from_user = lambda x: [D[d] for d in D if x in D[d]['days']][0]['name']
[D[d] for d in D]
允许迭代所有(名称,天)元素。
if x in D[d]['days']
是一个要素必须满足的条件,我想只有一个要素是这种情况。
我先用[0]
,然后是name
from_user(25)
返回'Leo'
答案 2 :(得分:0)
理想情况下,您希望结构化词典以使其易于根据键查找值,因此,最好重做词典,使日期为键,名称为值。
例如:
dict = {}
for num in range(1,12):
if num > 6:
dict[num] = 'Gemini'
else:
dict[num] = 'Leo'
dict
{1: 'Leo',
2: 'Leo',
3: 'Leo',
4: 'Leo',
5: 'Leo',
6: 'Leo',
7: 'Gemini',
8: 'Gemini',
9: 'Gemini',
10: 'Gemini',
11: 'Gemini'}
然后您要做的就是调用dict [1],dict [7]等。
答案 3 :(得分:0)
一个选项是简单的for循环。遍历键,检查数字是否在'days'范围内,如果是,则打印'name'(或做任何需要的名字)并中断(不需要进一步遍历)。如果不间断,则打印有关此消息(或采取任何其他措施)。
for key in d:
if 25 in d[key]['days']:
print(d[key]['name'])
break
else:
print('Not found')