Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列出字母表中的字母。要为每个包含项目的字母创建桶吗_Python_Python 3.x - Fatal编程技术网

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}