人,
现在尝试解决一段时间的数组问题...尝试了很多次google,但无法将任何解决方案适合我的情况,也许有人会给我提示如何做:
我有多维数组,如:
[['2217' 'onevalue']
['1694' 'twovalue']
['2852' 'twovalue']
['1994' 'threevalue']
['1258' 'onevalue']
['1710' 'onevalue']
['2348' 'threevalue']
['2009' 'threevalue']
['3655' 'threevalue']]
我可能需要在此数组中写循环或使用范围,因为我想获取尽可能多的包含相同值的新数组,如:
onevalue[] = [['1258' 'onevalue'],['1710' 'onevalue'],['2217' 'onevalue']]
twovalue[] = [['1258' 'twovalue'],['1710' 'twovalue'],['2217' 'twovalue']]
threevalue[] = [['1258' 'threevalue'],['1710' 'threevalue'],['2217' 'threevalue']]
所以基本上是新数组,其名称与具有值的原始数组是唯一的。
谢谢您的时间
维护一组键,在您的情况下为{onevalue,twovalue}。对于主循环中的每次迭代,请检查集合中是否存在“ onevalue”,“ twovalue”部分,如果是,则将其添加到其对应的数组中。
否则,为相同对象创建一个新数组,添加完整元素['num','type-value'],然后将新的type-value添加到您的集合中。你定了!
尝试一下:
arr = [['2217' , 'onevalue'],
['1694' , 'twovalue'],
['2852' , 'twovalue'],
['1994' , 'threevalue'],
['1258' , 'onevalue'],
['1710' , 'onevalue'],
['2348' , 'threevalue'],
['2009' , 'threevalue'],
['3655' ,'threevalue']]
dic = {}
for item in arr :
if item[1] in dic :
dic[item[1]].append(item)
else :
dic[item[1]] = [item]
for name,value in dic.items() :
exec(f"{name} = {value}")
print(onevalue)
print(twovalue)
print(threevalue)
请在下面尝试:
temp = dict()
for i in input_data:
if i[1] in temp:
temp[i[1]].append(i)
else:
temp[i[1]] = [i]
for obj in temp.keys():
print(temp[obj])
# [['2217', 'onevalue'], ['1258', 'onevalue'], ['1710', 'onevalue']]
# [['1694', 'twovalue'], ['2852', 'twovalue']]
# [['1994', 'threevalue'], ['2348', 'threevalue'], ['2009', 'threevalue'], ['3655', 'threevalue']]