[英]Flattening a dictionary
在這個 function 中,我試圖創建一個列表,其中包括字典的鍵乘以它們映射到的值,值是非負 integer。 我的代碼給了我我正在尋找的東西,但將鍵的每個字符(它們是字符串)視為單獨的而不是一個字符串,即 {'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
謝謝大家的幫助
您想遍歷所有字典鍵值對和 append 每個value
次到新列表。 dict.items()
也是一種使這更簡潔的好方法。
flattened_list = []
for k,v in d.items():
for _ in range(v):
flattened_list.append(k)
您當前擁有單詞級別的鍵,您需要先將鍵壓平到字符級別。 實現這一目標的一種方法是創建一個新的字典/哈希表來計算單詞中每個字符的出現次數,然后在該新字典上使用您當前的代碼。
這應該會有所幫助,而不是相乘,它會連接字符串,我迭代了這個數字:
flattenset = {'APPLE': 2, 'WHAT': 3}
flattenlist = []
for item in flattenset:
for x in range(flattenset[item]):
flattenlist.append(item)
如果我理解正確,那么此代碼會將您的字典value
時間的keys
放入列表中。
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']
這是使用列表理解的單行答案:
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
並沒有真正使用,甚至可以用_
代替以表示丟棄值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.