簡體   English   中英

如何根據鍵值修改dict元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM