【问题标题】: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)
我希望这会有所帮助并很重要!