from string import ascii_lowercase
index_display = [letter for letter in ascii_lowercase]
此处创建列表并将其存储在变量index_display中。
我现在正在尝试浏览此列表并为每个字母创建一个存储桶。这些存储桶将包含项目列表。
到目前为止,我所拥有的是
buckets = dict(enumerate(index_display))
我实际上在for循环中有枚举。 for循环遍历一个具有key ='state'的伙伴列表。然后我想获取状态值的字母,以便将每个伙伴分组到给定字母的桶中。基本上按字母顺序组织合作伙伴。
这是我想要的for循环,包括相应存储桶中的每个伙伴,具体取决于哪个是状态键值的第一个字母。
for partner in partners_by_state:
我在这里为合作伙伴提供元组示例:
Partner(state="Texas", name="beautiful", logo="beautiful.png",
link="http:hi.com"),
我也有州名单。
states = {'alabama': '',
'arizona': '',
'california': '',
},
以及此代码
partners_by_state = {}
for partner in partner_list:
raw_state_state_name = partner.state
state_key = raw_state_state_name.lower()
found_value = partners_by_state.get(state_key)
if not found_value:
partners_by_state[state_key] = []
partners_by_state[state_key].append(partner)
for state, parts in partners_by_state.items():
new_parts = sorted(parts, key=lambda x: x.name)
partners_by_state[state] = new_parts
我真的很感激我能得到任何帮助!
答案 0 :(得分:0)
更新问题的新答案
使用defaultdict
:
from collections import defaultdict
partners_by_state = defaultdict(list)
现在你可以在没有if语句的情况下追加:
for partner in partner_list:
raw_state_state_name = partner.state
state_key = raw_state_state_name.lower()[0] # first letter
partners_by_state[state_key].append(partner)
问题第一部分的旧答案
你可能想要一个带有列表值的词典:
from string import ascii_lowercase
buckets = {letter: [] for letter in ascii_lowercase}