gpt4 book ai didi

python - 扩展 python 字典和更改键值

转载 作者:行者123 更新时间:2023-11-28 22:24:37 25 4
gpt4 key购买 nike

假设我有一个带有 2 个键的 python 字典。

dic = {0:'Hi!', 1:'Hello!'}

我想做的是通过复制自身来扩展这个字典,但改变键值。例如,如果我有一个代码

dic = {0:'Hi!', 1:'Hello'}
multiplier = 3
def DictionaryExtend(number_of_multiplier, dictionary):
"Function code"

那么结果应该是这样的

>>> DictionaryExtend(multiplier, dic)
>>> dic
>>> dic = {0:'Hi!', 1:'Hello', 2:'Hi!', 3:'Hello', 4:'Hi!', 5:'Hello'}

在这种情况下,我通过在每个复制步骤添加倍数来更改键值。执行此操作的有效方法是什么?

另外,我还计划为列表变量做同样的工作。我的意思是,通过复制自身来扩展列表并更改一些值,如上面的例子。对此的任何建议也会有所帮助!

最佳答案

您可以尝试使用 itertools 来重复输入值,并使用 OrderedDict 来保持输入顺序。

import itertools as it
import collections as ct


def extend_dict(multiplier, dict_):
"""Return a dictionary of repeated values."""
return dict(enumerate(it.chain(*it.repeat(dict_.values(), multiplier))))

d = ct.OrderedDict({0:'Hi!', 1:'Hello!'})
multiplier = 3
extend_dict(multiplier, d)
# {0: 'Hi!', 1: 'Hello!', 2: 'Hi!', 3: 'Hello!', 4: 'Hi!', 5: 'Hello!'}

关于处理其他集合类型,不清楚需要什么输出,但以下修改重现了后者并且也适用于列表:

def extend_collection(multiplier, iterable):
"""Return a collection of repeated values."""
repeat_values = lambda x: it.chain(*it.repeat(x, multiplier))
try:
iterable = iterable.values()
except AttributeError:
result = list(repeat_values(iterable))
else:
result = dict(enumerate(repeat_values(iterable)))
return result

lst = ['Hi!', 'Hello!']
multiplier = 3
extend_collection(multiplier, lst)
# ['Hi!', 'Hello!', 'Hi!', 'Hello!', 'Hi!', 'Hello!']

关于python - 扩展 python 字典和更改键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46210757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com