创建一个函数,在附加条件的约束下将字典的键和值相乘?
Create a function that multiplies the keys and values of a dictionary while under the constraint of additional conditons?
首先,我对 python 不是很有经验。我目前正在尝试利用我所知道的和我可以使用的工具来学习。
总结
我想制作一个接受字典然后将所述字典的键和值相乘的函数。但是,我想要的外部条件使这个问题变得困难。
这些条件是:
如果其中一个值是负数,它不会将值乘以它各自的键,而是将 x 星号的数量乘以 abs(value),其中 x 是相应键中的字符数量.
该函数只能使用基本的 for/while 循环和 if 语句。通过在线查看类似问题,我对列表理解有些熟悉,但我并不擅长。相反,我想练习使用更简单的方法。
函数本身应该类似于 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(如此正),我们会多次为键添加一个值。如果不是,我们将星号添加到值乘以的绝对值。
首先,我对 python 不是很有经验。我目前正在尝试利用我所知道的和我可以使用的工具来学习。
总结
我想制作一个接受字典然后将所述字典的键和值相乘的函数。但是,我想要的外部条件使这个问题变得困难。
这些条件是:
如果其中一个值是负数,它不会将值乘以它各自的键,而是将 x 星号的数量乘以 abs(value),其中 x 是相应键中的字符数量.
该函数只能使用基本的 for/while 循环和 if 语句。通过在线查看类似问题,我对列表理解有些熟悉,但我并不擅长。相反,我想练习使用更简单的方法。
函数本身应该类似于 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(如此正),我们会多次为键添加一个值。如果不是,我们将星号添加到值乘以的绝对值。