python - 在保存中间值的同时多重映射一个值

标签 python dictionary

我想通过字典多次映射一个值,并记录中间值。由于 list.append() 不返回值,下面是我能想到的最好的。在 Python 中是否有更好的方法来执行此操作,也许是使用列表理解或递归?

def append(v, seq):
    seq.append(v)
    return v

def multimap(value, f, count):
    result = []
    for _ in range(count):
        value = append(f[value], result)

    return result

print( multimap('a', {'a': 'b', 'b': 'c', 'c': 'd', 'd': 'a'}, 4) )

输出:

['b', 'c', 'd', 'a']

最佳答案

不必处理列表,您可以简单地使用生成器:

def multimap(value, f, count):
    for _ in range(count):
        value = f[value]
        yield value

print(list(multimap('a', {'a': 'b', 'b': 'c', 'c': 'd', 'd': 'a'}, 4)))

关于python - 在保存中间值的同时多重映射一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29547766/

相关文章:

python - 如何利用 Scrapy 中的项目管道,按照每个 Spider 类定义的特定顺序保留/导出字段项目

python - 尝试按 block 对数组求和时出错

java - 泛型实现 Map.entrySet() 时遇到问题

c++ - 通过 map 中的引用更新对象

python - 如何在 psycopg2 中使用字典中的元组作为命名参数

python - 从 HDF5 文件读取和写入 numpy 数组

检查数据类字段是否具有默认值的 Pythonic 方法

python - 合并附加到字典中类似键的值

python - Python 中是否有针对字典元素的干净测试?

python - 我如何使用 Python 列表执行此操作? (元素收集器?)