-3

假设我有以下字典列表:

months = [
    {'id':'001','date':'January'},
    {'id':'002','date':'February'},
    {'id':'003','date':'March'},
    {'id':'004','date':'April'},
    {'id':'005','date':'May'},
    {'id':'006','date':'June'},
    {'id':'007','date':'July'},
    {'id':'008','date':'August'},
    {'id':'009','date':'September'},
    {'id':'010','date':'October'},
    {'id':'011','date':'November'},
    {'id':'012','date':'December'},
]

如果用户输入月份为一月,他应该得到 ID 为 001。

我试过这个,但它只返回一个月份列表。

res = [ mon['date'] for mon in months]

我需要直接来自密钥本身的 id。我怎样才能做到这一点?

4

5 回答 5

6

您可以使用月份作为字典中的键:

res = {mon['date']: mon['id'] for mon in months}
print(res['January'])
于 2019-12-28T13:10:07.480 回答
1

您将拥有的内容转换为从月份映射到 id 的 dict

new_dict = {item['date']: item['id'] for item in months}
于 2019-12-28T13:09:58.890 回答
1

我希望这段代码对你有用。

month_name = input("Enter month name.")
dic = next(item for item in months if item["date"] == month_name)
id = dic["id"]
print(id)

我在本地测试过这段代码,效果很好。

于 2019-12-28T13:31:31.100 回答
0

它应该是 id 而不是 date

res = [ mon['id'] for mon in months]
于 2019-12-28T13:12:13.133 回答
0

用于if在列表理解中进行过滤:

id = [m['id'] for m in months if m['date'] == 'January'][0]
于 2019-12-28T13:13:07.210 回答