【问题标题】:Have a list of the letters in the alphabet. Want to make buckets for each letter that will contain items有一个字母表中的字母列表。想要为每个包含项目的字母制作桶
【发布时间】:2017-10-31 18:24:35
【问题描述】:
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

如果能得到任何帮助,我将不胜感激!

【问题讨论】:

  • 什么是桶?
  • 没有必要把字母放在列表里,反正index_display = list(ascii_lowercase)就行了,但没必要。
  • 换句话说,您期望的实际输出是什么?
  • @juanpa.arrivillaga。或者只使用 ascii_lowercase。这就是它首先存在的目的......
  • @J.Doethe31st 你需要明确地提供你想要的,在问题本身。提供您想要的输出可能是最简单的。

标签: python python-3.x


【解决方案1】:

更新问题的新答案

使用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}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 2017-08-10
    相关资源
    最近更新 更多