拼合字典

时间:2019-11-11 22:22:43

标签: python

在此函数中,我试图创建一个列表,其中包含字典键乘以它们映射到的值的值,该值是非负整数。我的代码给出了我要寻找的内容,但是将键的每个字符(字符串)都视为单个字符而不是一个字符串,即{'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

谢谢您的帮助

5 个答案:

答案 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并没有真正使用,甚至可以用_来表示抛弃值。