我的发言如下:
the_dict = {'1': 2,
'2': 4,
'3': 3,
'8': 3,
'9': 3,
'10': 4,
'14': 4}
我需要将键与值相乘以创建一个长的平面列表。 我的尝试如下,但它将10和14搞糟:
new_target = []
for k, v in zip(the_dict.keys(), the_dict.values()):
new_target += list(k*v)
此代码生成:
['1', '1', '2', '2', '2', '2', '3', '3', '3', '8', '8', '8', '9', '9', '9', '1', '0', '1', '0', '1', '0', '1', '0', '1', '4', '1', '4', '1', '4', '1', '4']
该代码很接近,但由于10和14上的以下行为,它无法工作list("10" *2)
产生['1', '0', '1', '0']
而不是所需的['10', '10']
如何创建所需列表
再加上M-Chen-3的答案,你也可以用list comprehension把它浓缩成这样:
您需要对代码进行两项更改:
既然可以用相同的结果迭代
zip(the_dict.keys(), the_dict.values())
,为什么还要迭代the_dict.items()
请注意,如果将字符串括在列表中,则不管字符串有多长:
另外,正如wim指出的,
list
函数调用是不必要的,因为您已经在创建一个列表尽管如此,下面是更正的代码:
查看diggy的答案,获得一个简短的列表理解版本
相关问题 更多 >
编程相关推荐