arrays - 如何将重复的二维数组减少为一个
问题描述
我有以下二维数组,我希望根据数组的第一个值将重复减少为一个。
['AA' 'Put' 1]
['AAL' 'Call' 20]
['AAL' 'Put' 8]
['AAP' 'Call' 1]
['AAPL' 'Call' 1]
['AAPL' 'Put' 2]
['ABBV' 'Call' 1]
['ABBV' 'Put' 1]
['ABNB' 'Call' 6]
['ABNB' 'Put' 2]
['ABT' 'Call' 1]
['ACB' 'Call' 8]
['ADBE' 'Call' 1]
['ADP' 'Call' 1]
['AEO' 'Put' 1]
['AEZS' 'Call' 1]
['AG' 'Call' 1]
['AGNC' 'Put' 1]
['AHT' 'Call' 1]
The output I am looking is like this:
call put
['AA' '0' '1']
['AAL' '20' 8]
['AAP' '1' 0]
['AAPL' '1' 2]
['ABBV' '1' 1]
['ABNB' '6' 2]
['ABT' '1' '0']
['ACB' '8' '0']
['ADBE' '1' '0']
['ADP' '1''0' ]
['AEO' '0' '1']
['AEZS' '1' '0']
['AG' '1' '0']
['AGNC' '0' 1]
['AHT' '1' '0']
here is my attempt
arr2 = [[],[]] #the data
twoDarry = []
for items in range(len(arr2)):
print(arr2[items])
if(items+1<len(arr2)):
if(arr2[items][0]==arr2[items+1][0]): #check if duplicate
tmparr = []
tmparr = arr2[items]
tmparr.extend(arr2[items+1])
twoDarry.append(tmparr)
else: # not duplicate
twoDarry.append(arr2[items])
如果看涨或看跌是任务(意味着没有重复),则将零作为值。将其转换为 panada 不是一种选择,因为在某些时候我必须处理一些兼容性问题。我错过了什么?
解决方案
首先,我将假设您的数据数组已正确格式化为列表列表,如下所示:
indat = [['AA', 'Put', 1], ['AAL', 'Call', 20], ['AAL', 'Put', 8], ['AAP', 'Call', 1], ['AAPL', 'Call', 1],
['AAPL,', 'Put', 2], ['ABBV', 'Call', 1], ['ABBV', 'Put', 1], ['ABNB', 'Call', 6],
['ABNB', 'Put', 2], ['ABT', 'Call', 1], ['ACB', 'Call', 8], ['ADBE', 'Call', 1],
['ADP', 'Call', 1], ['AEO', 'Put', 1], ['AEZS', 'Call', 1], ['AG', 'Call', 1],
['AGNC', 'Put', 1], ['AHT' ,'Call', 1]]
鉴于您在问题中所描述的内容,我进一步假设您想要一个将数组作为变量并产生所需输出作为列表列表的函数。假设这些假设是正确的,以下函数将起作用。
def reduceArray(arr: list) -> list:
indict= dict()
for itm in arr:
cv = indict.pop(itm[0], [0, 0])
if itm[1] == 'Put':
if cv[1] == 0:
cv[1] = itm[2]
else:
if cv[0] == 0:
cv[0] = itm[2]
indict[itm[0]] = cv
rslt = []
for ky, val in indict.items():
rslt.append([ky, val[0], val[1]])
return rslt
执行:
reduceArray(indat)
产生:
[['AA', 0, 1],
['AAL', 20, 8],
['AAP', 1, 0],
['AAPL', 1, 0],
['AAPL,', 0, 2],
['ABBV', 1, 1],
['ABNB', 6, 2],
['ABT', 1, 0],
['ACB', 8, 0],
['ADBE', 1, 0],
['ADP', 1, 0],
['AEO', 0, 1],
['AEZS', 1, 0],
['AG', 1, 0],
['AGNC', 0, 1],
['AHT', 1, 0]]
推荐阅读
- c# - 如何更改变量中选定的组合框项目
- python - 使用 Pandas Dataframe 对 Herarchical Parent-Child 数据进行分组 - Python
- c# - 如何将金字塔保存到字符数组中?
- octave - Octave GUI 编辑器中的变量完成
- sql - 请问如何解决这个问题
- json - 转换 JSON 文件以将键添加到数组值
- android - 如何从资产中读取文件?
- c# - DynamoDB Scan 未正确映射到 DynamoDBProperty?
- c# - 无法播放此视频 Xamarin.Android
- python - 来自两个不同字典的对应键的每个可能的值差异