有没有一种单线形式将字符串放入列表中的次数是字典中指定的次数?

n0stalghia

我有一本包含字符串,整数对的字典,如下所示:

dict = {
    'a': 2,
    'b': 0,
    'c': 3
}

我需要从中生成以下列表:

list = ['a', 'a', 'c', 'c', 'c']

现在,我可以很容易地使用普通函数来做到这一点:

def foo(dict):
    list = []
    for key, value in dict:
        for n in range(value):
            list.append(key)
    return list

但是,我宁愿使用单线解决此问题,或者如果可能的话,至少要缩短删除double for循环的函数。有没有办法做到这一点?

马丁·彼得斯(Martijn Pieters)

list.append()可以很简单地将您的呼叫转换为列表理解:

[key for key, value in d.items() for _ in range(value)]

请注意,我使用的d是字典的名称,而不是dict

您可以通过使用itertools模块延迟生成序列

from itertools import chain, repeat, starmap

chain.from_iterable(starmap(repeat, d.items()))

itertools.starmap()函数repeat(key, value)反复调用,产生itertools.repeat()object,并itertools.chain.from_iterable()获取每个repeat()对象并将它们产生的结果展平为单个序列。

这也恰好是使用的实现Counter.elements(),因此您也可以使用一个Counter对象:

Counter(d).elements()

但要考虑到这必须首先创建输入字典的副本。当然,也许Counter其余的代码也应该使用a

这些实现的演示:

>>> [key for key, value in d.items() for _ in range(value)]
['a', 'a', 'c', 'c', 'c']
>>> from itertools import chain, repeat, starmap
>>> it = chain.from_iterable(starmap(repeat, d.items()))
>>> list(it)
['a', 'a', 'c', 'c', 'c']
>>> from collections import Counter
>>> it = Counter(d).elements()
>>> list(it)
['a', 'a', 'c', 'c', 'c']

我曾经list()一步一步地将迭代器版本中的所有元素收集到一个新列表中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用python中的嵌套循环从列表中指定次数打印所有字符串

有没有一种简单的方法可以计算一个文本字符串在另一文本字符串中的出现次数?

有没有一种方法可以在列表中字符串的空格之间插入“-”?

有没有一种方法可以将字符串附加到第一个位置的每个列表中?

有没有一种方法可以简化将字符串、对象添加到 Xamarin 中的资源字典的过程,以便我可以使用列表或数组来执行此操作?

有没有一种方法可以将字符串默认设置为继承列表中的类的名称

有没有一种简单的方法可以将小数格式化为sql中的字符串

有没有一种方法可以将JSON中的对象视为字符串?

有没有一种方法可以在字典键中生成随机字符串?

有没有一种方法可以将列表放入Python集?

有没有办法计算一个单词在字符串中重复的次数?

有没有一种简单的方法可以以字符串形式使用嵌套对象 > 数组键?

有没有一种方法可以按字符串中的数字对字符串列表进行排序?

有没有一种方法可以将两个变量与以字符串形式存储的比较器进行比较

有没有一种方法可以拆分以下格式的列表:“字符串1”,“字符串2”,“字符串3”,

有没有一种计算数组中每个元素出现次数的pythonic方法?

有没有一种标准的方法来指定文档字符串中的回调函数的类型?

有没有一种pythonic的方法可以尝试最大次数的尝试?

有没有一种有效的方法来连接golang模板中的字符串

有没有一种简单的方法来检查字符串中的大写字符?

有没有一种简单的方法可以将唯一的字符串转换成JavaScript中的唯一数字?

有没有一种方法可以将“字符串”转换为“ KType”?

有没有一种方法可以将graphql查询字符串转换为GraphQLResolveInfo对象?

有没有一种更好的方法来将虚线路径作为字符串?

在Sklearn中,有没有一种干净的方法来转换字典列表?

有没有一种方法可以在Python中对字符串中的特定序列进行分组?

有没有一种方法可以将数字值一起添加到字符串中而不会循环?

有没有一种快速的方法可以将字符串中的罗马数字转换为R中的阿拉伯语?

Powershell:有没有一种方法可以将数组中的变量作为字符串添加到文件中?