Python 如何根据另一个元素访问字典的子元素?
嘿,我创建了这个字典,希望能够基于另一个元素访问其中一个元素。因此,在主字典中,我有一个字典,其中包含“name”和“days”,并基于用户输入(他们将输入日期),我希望输出名称Python 如何根据另一个元素访问字典的子元素?,python,list,dictionary,Python,List,Dictionary,嘿,我创建了这个字典,希望能够基于另一个元素访问其中一个元素。因此,在主字典中,我有一个字典,其中包含“name”和“days”,并基于用户输入(他们将输入日期),我希望输出名称 {1: {"name": "Leo", "days": range(1, 61)}, 2: {"name": "Gemini", "days": range(61, 122)}, .... 在上面这个例子中,如果用户输入25,我想输出“Leo”。我该怎么做?最初我想做的只是if语句,但是有没有一种方法可以基于“day
{1: {"name": "Leo", "days": range(1, 61)}, 2: {"name": "Gemini", "days": range(61, 122)}, ....
在上面这个例子中,如果用户输入25,我想输出“Leo”。我该怎么做?最初我想做的只是if语句,但是有没有一种方法可以基于“days”子元素访问“name”子元素呢
因此,如果输入为25
,
我希望输出为
Leo
您可以扫描dict中的元素
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])
你可以浏览目录中的元素
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])
您可以这样做: 我已将您的dict命名为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]
允许迭代所有(名称、天数)元素
D = {1: {"name": "Leo", "days": range(1, 61)}, 2: {"name": "Gemini", "days": range(61, 122)}}
如果x在D[D]['days']
是一个元素必须遵守的条件,我想只有一个元素是这样的
我取第一个带有[0]
的,然后是名称
from_user(25)
返回'Leo'
您可以这样做:
我已将您的dict命名为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]
允许迭代所有(名称、天数)元素
D = {1: {"name": "Leo", "days": range(1, 61)}, 2: {"name": "Gemini", "days": range(61, 122)}}
如果x在D[D]['days']
是一个元素必须遵守的条件,我想只有一个元素是这样的
我取第一个带有[0]
的,然后是名称
from_user(25)
返回'Leo'
理想情况下,您希望构建字典,使其易于根据键查找值,因此您最好重新编写字典,以日数为键,名称为值
例如:
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]等等。理想情况下,您希望构建字典,使其易于根据键查找值,因此您最好重新编写字典,以便日数是键,名称是值 例如:
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]等等。有一个选项对于循环很简单。迭代键,检查数字是否在“天”范围内,如果是,则打印“名称”(或对名称执行任何需要的操作)并中断(无需进一步迭代)。如果没有中断,则打印相关消息(或采取任何其他措施)
一个选项是简单的for循环。迭代键,检查数字是否在“天”范围内,如果是,则打印“名称”(或对名称执行任何需要的操作)并中断(无需进一步迭代)。如果没有中断,则打印相关消息(或采取任何其他措施)
欢迎来到SO。这不是一个讨论论坛或教程。请花点时间阅读和阅读该页面上的其他链接。花些时间练习这些例子。它将让您了解Python提供的帮助您解决问题的工具。这不是一个讨论论坛或教程。请花点时间阅读和阅读该页面上的其他链接。花些时间练习这些例子。它将让您了解Python提供的帮助您解决问题的工具。