在此函数中,我试图创建一个列表,其中包含字典键乘以它们映射到的值的值,该值是非负整数。我的代码给出了我要寻找的内容,但是将键的每个字符(字符串)都视为单个字符而不是一个字符串,即{'APPLE':2}-> ['A','P',' P”,“ L”,“ E”,“ A”,“ P”,“ P”,“ L”,“ E”],而不是 ['APPLE','APPLE'] 这是我的代码:
def flatten_dict(d):
flattened_dict = []
for key in d:
flattened_dict += flatten_lists(key)*d[key]
return flattened_dict
谢谢您的帮助
答案 0 :(得分:1)
您要遍历所有字典键值对,并将每个键value
附加到新列表中。 dict.items()
是使这一点更加简洁的好方法。
flattened_list = []
for k,v in d.items():
for _ in range(v):
flattened_list.append(k)
答案 1 :(得分:0)
您当前在单词级别上具有按键,需要首先将按键展平为字符级别。一种实现方法是创建一个新的字典/哈希表,该字典/哈希表计算单词中每个字符的出现次数,然后在该新字典上使用当前代码。
答案 2 :(得分:0)
这应该有助于而不是乘以将字符串连接起来,而是遍历数字:
flattenset = {'APPLE': 2, 'WHAT': 3}
flattenlist = []
for item in flattenset:
for x in range(flattenset[item]):
flattenlist.append(item)
答案 3 :(得分:0)
如果我对您的理解正确,那么这段代码会将您keys
的惯用语value
放入列表。
def flatten_dict(d):
flattened_dict = []
for key, value in d.items():
flattened_dict.extend([key for _ in range(value)])
return flattened_dict
print(flatten_dict({"Apple": 2,
"Pear": 3,
"Nuts": 0}))
输出:
['Apple', 'Apple', 'Pear', 'Pear', 'Pear']
答案 4 :(得分:0)
这里是使用list comprehension的单行答案:
a = {'APPLE':2, "Orange": 3}
# extract the key and values from a.items() and then repeat it 'n' times
output = [key for key, value in a.items() for n in range(value)]
output
这将返回:
['APPLE', 'APPLE', 'Orange', 'Orange', 'Orange']
要分解理解: 这将从字典中提取每个键,值对并返回键
key for key, value in a.items()
然后我们按值次数重复键
for n in range(value)
注意:n
并没有真正使用,甚至可以用_
来表示抛弃值。