【问题标题】:Extract a value from a dictionary that is inside a list and a string in Python从 Python 中的列表和字符串中的字典中提取值
【发布时间】:2022-01-10 15:12:21
【问题描述】:

我似乎无法从 Python 中的列表和字符串中的字典值创建列表

string = "[{'iso_639_1': 'en', 'name': 'English'}, {'iso_639_1': 'ru', 'name': 'Pусский'}, {'iso_639_1': 'es', 'name': 'Español'}]"

desired_outcome = ['English', 'Pусский', 'Español']

【问题讨论】:

  • edit您的问题将相关代码添加为文本。语言标签也会有所帮助(这看起来像 python)。
  • 我刚刚编辑了我的帖子。看看吧

标签: python string list dictionary list-comprehension


【解决方案1】:

我概括了它,但这就是我相信 Python 所要寻找的东西。这是假设您总是想要与每个字典的“名称”键关联的值。

starting_dict = [{'key1': 'val1','name': 'val2'}, 
                 {'key3': 'val3','name': 'val4'}, 
                 {'key5':'val5','name': 'val6'}]
value_lst = list()
for my_dict in starting_dict:
  value_lst.append(my_dict['name'])
print(value_lst)

输出:

['val2', 'val4', 'val6']

【讨论】:

    【解决方案2】:

    我会先将字符串格式化为 JSON,然后使用 json.loads 将字符串反序列化为 Python 字典。

    string = '[{"iso_639_1": "en", "name": "English"}, {"iso_639_1": "ru", "name": "Pусский"}, {"iso_639_1": "es", "name": "Español"}]'
    dictionary = json.loads(string)
    
    

    然后使用列表推导从字典列表中收集值:

    names = [i['name'] for i in dictionary]
    

    【讨论】:

      【解决方案3】:

      我真正喜欢 Python 的一个特点是函数 eval()。

      你的字符串是:

      string = "[{'iso_639_1': 'en', 'name': 'English'}, {'iso_639_1': 'ru', 'name': 'Pусский'}, {'iso_639_1': 'es', 'name': 'Español'}]"
      

      只需这样做:

      desired_outcome = []
      
      for d in eval(string):
          desired_outcome.append(d['name'])
      
      print(desired_outcome)
      

      【讨论】:

        猜你喜欢
        • 2017-12-15
        • 1970-01-01
        • 2017-02-09
        • 2022-11-22
        • 2021-09-26
        • 2018-12-13
        • 1970-01-01
        • 2016-06-24
        • 2022-06-10
        相关资源
        最近更新 更多