为了账号安全,请及时绑定邮箱和手机立即绑定

Python 字典乘以键 * 值

Python 字典乘以键 * 值

翻阅古今 2023-12-20 16:07:45
大家好,尝试将 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']请帮忙
查看完整描述

4 回答

?
POPMUISE

TA贡献1765条经验 获得超5个赞

因为字符串的乘法不会返回您所期望的内容,它将字符串乘以一个更长的字符串,您最好使用 @deadshot 建议的一段代码:

def inventory(data):
   return [key  for key, val in data.items() for i in range(val)]

输出将如您所期望的那样......


查看完整回答
反对 回复 2023-12-20
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

使用以下代码。


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


查看完整回答
反对 回复 2023-12-20
?
呼如林

TA贡献1798条经验 获得超3个赞

将 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']


查看完整回答
反对 回复 2023-12-20
?
忽然笑

TA贡献1806条经验 获得超5个赞

您好,如果您想解决您的问题,我发现了这个:


dic = {'coca-cola':3, 'fanta':2}

def inventory(data):

  lis = []

  lis = [[key]* val for key, val in data.items()]

  return lis

print (inventory(dic))

你会得到这个:


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


查看完整回答
反对 回复 2023-12-20
  • 4 回答
  • 0 关注
  • 175 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信