创建一个函数,在附加条件的约束下将字典的键和值相乘?

Create a function that multiplies the keys and values of a dictionary while under the constraint of additional conditons?

首先,我对 python 不是很有经验。我目前正在尝试利用我所知道的和我可以使用的工具来学习。

总结

我想制作一个接受字典然后将所述字典的键和值相乘的函数。但是,我想要的外部条件使这个问题变得困难。

这些条件是:

函数本身应该类似于 dict_multiply(dict):,测试试验应该类似于dict_multiply({'Terra': 6, 'Cloud': -7, 'Squall': 8}) which returns 'TerraTerraTerraTerraTerraTerra***********************************SquallSquallSquallSquallSquallSquallSquallSquall' . Terra重复6次,‘Cloud’中的字母转换成星号乘以abs(-7),Squall重复8次

我在尝试什么

我尝试做的是将问题分解成几个步骤。为了方便不必重新运行它,我还没有将我的任何代码放入函数中,但我一直在试验变量。

例如,我想尝试创建一个条件,将字典中的负值读作星号。

dictionary = {'Terra': 6, 'Cloud': -7, 'Squall': 8}

keylist = list(dictionary.keys())
valuelist = list(dictionary.values())

for values in valuelist:
    if values < 0:
        valuelist[valuelist.index(values)] = abs(values) * ('*')
valuelist

其中 returns [6, '*******', 8]。这只是我想从函数中得到的一个组件,但我想我已经有所进展了。 keylist 是一个包含 ['Terra', 'Cloud', 'Squall'] 的列表,我想将其乘以我返回的值列表。我知道我可以将 'Terra' 等字符串乘以 6 等 int 值,但我知道将两个字符串(例如 '*******' 和 'Cloud' 相乘是不可能的。相反,我只想返回星号,但我不确定如何创建此条件。

实际将整数列表乘以字符串列表的问题也是我关心的问题。我在网上看到了这一步的解释,但 none 的解释是我的编码水平(基本 for/while 循环)。

忽略这一点并假设乘法以某种方式成功,我认为我应该留下一个用逗号分隔的字符串列表,我知道我可以使用 ''.join(c) 合并成一个字符串(假设 c 是我遇到问题的步骤的结果)。

如果我的思维过程可能令人困惑,我深表歉意。我还在学习中python。展望未来,我希望能够将这些问题分解为步骤,并确定我应该首先考虑哪些步骤。感谢任何反馈。

您可以尝试运行以下代码:

def dict_multiply(d: dict):
  s = ""
  for key, val in d.items():
    if val > 0:
      s += key * val
    else:
      s += "*" * abs(val) * len(key)
  return s

print(dict_multiply({'Terra': 6, 'Cloud': -7, 'Squall': 8}))

在这里,我们循环遍历输入字典的键和值。如果该值大于 0(如此正),我们会多次为键添加一个值。如果不是,我们将星号添加到值乘以的绝对值。