【问题标题】:Creating Dictionary from nth list items从第 n 个列表项创建字典
【发布时间】:2020-03-02 12:38:33
【问题描述】:

我有一个列表,其中列表中的每个项目进一步分为 3 个字段,用 '| 分隔。 ' 假设我的清单是: [‘北美| 23 |美国”、“南美” | 12 |巴西', '欧洲 | 51 |希腊’……]等等

使用这个列表,我想创建一个字典,将每个项目中的第一个字段作为值,将每个项目中的第二个字段作为键。

如何使用 for 循环将这些列表项添加到字典中?

我的预期结果是 {'23':'北美', '12':'南美', '51':'欧洲'}

【问题讨论】:

  • 请提及您使用的编程语言

标签: list dictionary for-loop


【解决方案1】:

这样的事情怎么样:

var myList = new List<string>() { "North America | 23 | United States", "South America | 12 | Brazil", "Europe | 51 | Greece" };
var myDict = myList.Select(x => x.Split('|')).ToDictionary(a => a[1], a => a[0]);

【讨论】:

    【解决方案2】:

    假设你在 Python 中,如果你知道分隔符是什么,你可以使用 string.split() 将字符串分解成一个列表,然后从那里开始。

    my_dict = {}
    for val in my_list:
        words = val.split(" | ")
        my_dict[words[1]] = words[0]
    

    对于其他语言,你可以取第一个“|”的索引,从开头的子字符串给你你的值,然后取第二行的索引给你键。在 Java 中,这看起来像:

    Map<String, String> myDict = new DopeDataStructure<String, String>();
    for(String s : myArray){
        int pos = s.indexOf("|");
        String val = s.substring(0, pos - 1);
        String rest = s.substring(pos + 2);
        String key = rest.substring(0, rest.indexOf("|") - 1);
        myDict.put(key, val);
    }
    

    编辑:很可能有更有效的方法可以用其他语言解决问题,这只是我知道的最简单的方法

    【讨论】:

      【解决方案3】:

      使用 Python dict 理解

      data = ['North America | 23 | United States', 'South America | 12 | Brazil',]
      # Spliting each string in list by "|" and setting its 1st index value to dict key and 0th index value to dict value
      res = {i.split(" | ")[1]: i.split(" | ")[0] for i in data}
      print (res)
      

      我希望这会有所帮助并很重要!

      【讨论】:

        猜你喜欢
        • 2021-03-09
        • 2016-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-29
        相关资源
        最近更新 更多