Python 列出字母表中的字母。要为每个包含项目的字母创建桶吗
在这里,列表被创建并存储在变量索引显示中 我现在尝试浏览这个列表,为每个字母创建一个桶。这些存储桶将包含项目列表 到目前为止,我得到的是Python 列出字母表中的字母。要为每个包含项目的字母创建桶吗,python,python-3.x,Python,Python 3.x,在这里,列表被创建并存储在变量索引显示中 我现在尝试浏览这个列表,为每个字母创建一个桶。这些存储桶将包含项目列表 到目前为止,我得到的是 from string import ascii_lowercase index_display = [letter for letter in ascii_lowercase] 实际上,我在for循环中有这个枚举。for循环遍历具有key='state'的伙伴列表。然后,我想获取状态值的字母,以便将每个伙伴分组到给定字母的桶中。基本上是按字母顺序组织合作伙
from string import ascii_lowercase
index_display = [letter for letter in ascii_lowercase]
实际上,我在for循环中有这个枚举。for循环遍历具有key='state'的伙伴列表。然后,我想获取状态值的字母,以便将每个伙伴分组到给定字母的桶中。基本上是按字母顺序组织合作伙伴
下面是for循环,我希望根据每个伙伴的statekeys值的第一个字母,将其包含在各自的bucket中
buckets = dict(enumerate(index_display))
我有伙伴的元组,例如:
for partner in partners_by_state:
我也有一份州名单
Partner(state="Texas", name="beautiful", logo="beautiful.png",
link="http:hi.com"),
还有这个代码
states = {'alabama': '',
'arizona': '',
'california': '',
},
我真的很感激能得到的任何帮助 更新问题的新答案 使用
defaultdict
:
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
现在可以不使用if语句进行追加:
from collections import defaultdict
partners_by_state = defaultdict(list)
问题第一部分的旧答案
您可能需要一个以列表为值的字典:
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)
什么是bucket?不需要将字母放入列表中,而且,您可以只执行
index\u display=list(ascii\u小写)
,但这不是必需的。换句话说,您期望的实际输出是什么?@juanpa.arrivillaga。或者只使用ascii_小写。这就是它的初衷。…。@J.doethe31你需要在问题本身中明确地提供你想要的东西。提供所需的输出可能是最容易的。
from string import ascii_lowercase
buckets = {letter: [] for letter in ascii_lowercase}