【问题标题】:Dictionary and list lookup based on key [closed]基于键的字典和列表查找[关闭]
【发布时间】:2020-08-09 18:55:06
【问题描述】:
input_list = [
    'thissong-fav-user:ABC-chan-44-John', 
    'thissong-fav-user:type1-jsjd01-45-kelly-md', 
    'thissong-fav-user:type2-rock-45-mkr5', 
    'thissong-fav-user:type737-chan-45-fft-md', 
    'thissong-fav-user:type37-chan-45-kelly-md']
]


mainlookup = {'ABC': {'Price': '30', 'Song': 'Reggaeton', 'Type': 'Hard'},
 'JSJD': {'Price': '10', 'Song': 'Rock', 'Type': 'Hard'},
 'fft': {'Price': '1', 'Song': 'Rock', 'Type': 'Soft'},
 'mkr': {'Price': '99', 'Song': 'Jazz', 'Type': 'Hard'}}


OUTPUT_DICT = {
 'thissong-fav-user:ABC-chan-44-John': {'Price': '30',
                                        'Song': 'Reggaeton',
                                        'Type': 'Hard'},
 'thissong-fav-user:type1-jsjd01-45-kelly-md': {'Price': '10',
                                                'Song': 'Rock',
                                                'Type': 'Hard'},
 'thissong-fav-user:type2-rock-45-mkr5': {'Price': '99',
                                          'Song': 'Jazz',
                                          'Type': 'Hard'},
 'thissong-fav-user:type737-chan-45-fft-md': {'Price': '1',
                                              'Song': 'Rock',
                                              'Type': 'Soft'}}

我试过了

OUTPUT_DICT = {i: mainlookup.values() 
                  for i in input_list 
                  if mainlookup.keys() in input_list}

但得到空字典

【问题讨论】:

  • 要查看键是否在 dict 中,"if key in my_dict" 并获取值,您仍然需要键 my_dict[key] 并找到要搜索,你将不得不解析那些文本字符串。

标签: python list dictionary lookup


【解决方案1】:
OUTPUT_DICT = dict()
for i in mainlookup:
    for j in input_list:
        if i.lower() in j.lower():
            OUTPUT_DICT[j] = mainlookup[i]

【讨论】:

  • 我担心没有字典查找。 O(n^2) 并且有误报的风险(但不在此数据集上)
  • 确实如此。我有相对较小的数据集,所以这会起作用,但是对于更大的数据集,这会产生很多误报。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多