Python 字典乘以键 * 值

大家好,尝试将 python 字典中的键 * 值相乘。

我有以下代码:

dic = {'coca-cola':3, 'fanta':2}def inventory(data):
  lis = []
  lis = [key * val for key, val in data.items()]
    return lis
inventory(dic)

然而我的输出是

['coca-colacoca-colacoca-cola', 'fantafanta']

我想得到

['coca-cola', 'coca-cola', 'coca-cola', 'fanta', 'fanta']

请帮忙


翻阅古今
浏览 64回答 4
4回答

POPMUISE

因为字符串的乘法不会返回您所期望的内容,它将字符串乘以一个更长的字符串,您最好使用 @deadshot 建议的一段代码:def inventory(data):    return [key  for key, val in data.items() for i in range(val)]输出将如您所期望的那样......

守着星空守着你

使用以下代码。dic = {'coca-cola':3, 'fanta':2}def inventory(data):  lis = []  for key, val in data.items():      for item in range(0,val):          lis.append(key)  return lis

呼如林

将 a 乘以stran int(如您最初的尝试)只会返回str原始 的重复项str。例如3 * 'hi' = 'hihihi'。相反,您想要返回一个,list其中每个:对中的每个存储次数。下面的理解就是这样做的。keydictvalkeyvaluedictlist解决方案def inventory(data):  return [key for key, val in data.items() for i in range(val)]dic = {'coca-cola':3, 'fanta':2}print(inventory(dic))输出['coca-cola', 'coca-cola', 'coca-cola', 'fanta', 'fanta']

忽然笑

您好,如果您想解决您的问题,我发现了这个:dic = {'coca-cola':3, 'fanta':2}def inventory(data):  lis = []  lis = [[key]* val for key, val in data.items()]  return lisprint (inventory(dic))你会得到这个:[['coca-cola', 'coca-cola', 'coca-cola'], ['fanta', 'fanta']]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python