gpt4 book ai didi

python - 如何使用索引根据键和值将字典拆分为多个字典?

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:12 24 4
gpt4 key购买 nike

我只想选择一组满足我的条件的元素(例如属于菜单 no1 的元素),并将这些元素附加到新字典中。每组元素(例如 1 号菜单)都有开始键 - 'Miniwok_Stall_Menu1' 和结束键 - 'remark:@Miniwok_stall_Menu1'
字典在这里:https://pastebin.com/viDw1snv
我目前的计划是:
1) 查找满足条件的选定元素集:星期几 - 必须存在于要选择的菜单的第一个值中 例如星期一、星期二的星期一... 和用餐时间 - 值备注键中的值必须与 time_of_meal 相同,例如“None”
2) 使用 enumerate 获取所选元素集的开始和结束索引。 #e.g(0,4,5,9)
3)使用for循环,根据索引创建一个新字典。 (仅包含选定的元素集)
4) 预期输出是一个与原始格式完全相同的字典,但仅包含选定的元素集。

#raw_list_stallinfo is assigned to the dictionary in pastebin.
selected_stalls = []
Day_of_week = 'Mon'
time_of_meal = 'None' #None is inclusive of breakfast,lunch and dinner

for raw_list_idx, raw_list_key in enumerate(raw_list_stallinfo.keys()):
#select the menu number based on day of week
if Day_of_week in raw_list_stallinfo[raw_list_key]:

#day_of_week is always found in the first index of a set of elements
selected_stalls.append(raw_list_idx)



print(selected_stalls)

问题:
1)如何获取所选元素集的结束键的索引?(即备注键的索引)一个集合可以比另一个集合拥有更多的元素,因此无法进行硬编码。启动键已在 selected_stalls 中找到。我正在寻找(menu2的开始键,menu2的结束键,menu3的开始键,menu3的结束键)
2)如何获取包含“remark”的键的索引以用于验证第二个条件time_of_meal?
如果 raw_list_stall_info[remark_key_index] == time_of_meal:

最佳答案

您可以将 for 循环放入字典理解中:

selected_stalls = []
Day_of_week = 'Mon'
time_of_meal = 'None'

raw_list_stallinfo = {'MiniWok_Stall_Menu1': 'Monday_Tuesday@Wednesday', 'Item1: Seafood HorFun@MiniWok_Stall_Menu1': '$4.50', 'Item2: Fish HorFun@MiniWok_Stall_Menu1': '$3.50', 'Item3: Chicken Horfun@MiniWok_Stall_Menu1': '$3.50', 'remark:@MiniWok_Stall_Menu1': 'None', 'MiniWok_Stall_Menu2': 'Thursday_Friday@Sunday', 'Item1: Seafood Fried Rice@MiniWok_Stall_Menu2': '$4.50', 'Item2: Salted Fish Fried Rice@MiniWok_Stall_Menu2': '$3.50', 'Item3: Chicken Fried Rice@menu2': '$3.50', 'remark:@MiniWok_Stall_Menu2': 'None', 'MiniWok_Stall_Menu3': 'Monday_Tuesday_Wednesday_Thursday_Friday@Sunday', 'Item1: Chicken Porridge@MiniWok_Stall_Menu3': '$3.00', 'Item2: Century-egg porridge@MiniWok_Stall_Menu3': '$4.00', 'remark:@MiniWok_Stall_Menu3': 'Breakfast Only'}

raw_list = {raw_list_idx: raw_list_key for raw_list_idx, raw_list_key in enumerate(raw_list_stallinfo.keys()) if Day_of_week in raw_list_stallinfo[raw_list_key]}
selected_stalls.append(raw_list)
print(selected_stalls)

这将给出输出:

[{0: 'MiniWok_Stall_Menu1', 10: 'MiniWok_Stall_Menu3'}]

要查找time_of_meal位置:

location = {i: k for i, k in enumerate(raw_list_stallinfo.values()) if k == time_of_meal}
print(location)

其中给出的位置为:

{4: 'None', 9: 'None'}

然后,要在不进行硬编码的情况下找到备注,您可以将其与上面的位置结合起来:

remark_location = {i: k for i, k in raw_list_stallinfo.items() if k == time_of_meal}
print(remark_location)

返回完整的键和值:

{'remark:@MiniWok_Stall_Menu1': 'None', 'remark:@MiniWok_Stall_Menu2': 'None'}

关于python - 如何使用索引根据键和值将字典拆分为多个字典?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58563229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com