[英]How to modify dict elements based on key value?
我為一些基本的想法而掙扎(我猜)
list_a = [{'title': 'some product name ()', 'network': 'network_one'}, {'title': 'another product name - some more', 'network': 'network_two'}]
keys_dict = {
'network_one': items['title'].split('(')[0].title().rstrip(), #yup - I know its wrong but you have the idea
'network_two': items['title'].split('-')[0].lower().rstrip(),
}
l = []
for items in list_a:
# print(i)
if items['network'] in keys_dict:
items['product'] = keys_dict[items['network']]
l.append(items)
print(l)
給定的是一個list_a;
我想根據 list_a 中的“網絡”鍵值創建新的鍵“產品”。 因此,如果 'network' == 'network_one', 'product' 值應該通過應用來創建
split('(')[0].title().rstrip()
關於“標題”值
基於另一個鍵值的不同“標題”字符串轉換並從中創建新鍵值。
簡單的 if,else 對我有用,但是當你有大量數據時; 我想當你使用 dicts 時更容易管理。
預期 output =
l = [{'title': 'some product name ()', 'network': 'network_one', 'product: 'Some product name'}, {'title': 'another product name - some more', 'network': 'network_two', 'product': 'another product name'}]
一個像下面這樣的新值的簡單字符串確實有效,但我知道如何處理它們我不知道如何應用上述場景,其中鍵值必須(?)是字符串修改值 rstrip 等
keys_dict = {
'network_one': 'product name',
'network_two': 'another product name',
}
您可以在您的 keys_dict 中使用 lambda function ,它應該將字符串作為參數並進行適當的轉換。
keys_dict = {
'network_one': lambda s: s.split('(')[0].title().rstrip(),
'network_two': lambda s: s.split('-')[0].lower().rstrip(),
}
new_list = []
for d in list_a:
if (network := d['network']) in keys_dict:
d['product'] = keys_dict[network](d['title'])
new_list.append(d)
我會用re
來完成這個任務:
from re import search
list_a = [{'title': 'some product name ()', 'network': 'network_one'},
{'title': 'another product name - some more', 'network': 'network_two'}]
for d in list_a:
d['product'] = search(r'^(.*) [(-]?',d['title'])[1]
>>> list_a
'''
[{'title': 'some product name ()',
'network': 'network_one',
'product': 'some product name'},
{'title': 'another product name - some more',
'network': 'network_two',
'product': 'another product name'}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.