说我有一个清单:
['1,2,3', '1,2,3', '1,3,2', '2,1,3', '2,3,1']
如何根据项目中特定数字的位置将项目分类为字典的特定键?如果1是第一个数字,则应将该项添加到第一个键的值中,如果它是第二个键,则应将其添加到第二个键的值中。
所以,如果我有一个带有键A,B,C的字典:
{'A': [], 'B': [], 'C': []}
生成的字典应如下所示:
{'A': ['1,2,3', '1,2,3', '1,3,2'], 'B': ['2,1,3'], 'C':['2,3,1']
目前我有以下代码:
lst = ['1,2,3', '1,2,3', '1,3,2', '2,1,3', '2,3,1']
dict = {'A': [], 'B': [], 'C': []}
for item in list
item.strip(',')
if item[0] == 1:
dict['A'].append(item)
elif item[1] == 1:
dict['B'].append(item)
elif item[2] == 1:
dict['C'].append(item)
print(dict)
但是,这只会返回原始字典。
答案 0 :(得分:1)
试试这个:
lst = ['1,2,3', '1,2,3', '1,3,2', '2,1,3', '2,3,1']
dict = {'A': [], 'B': [], 'C': []}
for item in lst:
l = item.replace(',', '')
if l[0] == '1':
dict['A'].append(item)
elif l[1] == '1':
dict['B'].append(item)
elif l[2] == '1':
dict['C'].append(item)
print(dict)
我希望这有帮助!
答案 1 :(得分:0)
我认为您打算使用item.split(',')
而不是item.strip(',')
,它只删除字符串item
开头和结尾的逗号。 item.split(',')
使用逗号作为分隔符将字符串item
拆分为一个列表。此外,您需要保存方法调用的结果,上述方法调用都不会修改字符串。
您可能想要做的事情是:
lst = ['1,2,3', '1,2,3', '1,3,2', '2,1,3', '2,3,1']
dict = {'A': [], 'B': [], 'C': []}
for item in lst:
item_arr = item.split(',')
key = 'ABC'[item_arr.index('1')]
dict[key].append(item)
print(dict)
答案 2 :(得分:0)
效率较低且不太可读,但这里是使用字典和列表推理的单线:
lst = ['1,2,3', '1,2,3', '1,3,2', '2,1,3', '2,3,1']
keys = ['A', 'B', 'C']
dic = {key: [x for x in lst if x.split(',')[j] == '1'] for j, key in enumerate(keys)}
# {'A': ['1,2,3', '1,2,3', '1,3,2'], 'B': ['2,1,3'], 'C': ['2,3,1']}