如何将列表作为值存储在python defaultdict列表中

2024-06-26 13:22:21 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以将坐标存储为字典中的元组或列表? 我已经创建了一个字典,它将(与原点的距离)作为键,将(x,y中的坐标)作为值。但是,如果我尝试在同一距离上附加多个坐标,它会覆盖。在

以下是我目前为止的代码:

import math
from collections import defaultdict
origin_x = 0.0
origin_y = 0.0

P = [(0,1),(1,0),(1,0)]
k = 2

xmid = float(sum(P[:][0]))/len(P)

xleft = [x for x in P[:][0] if x <= xmid]
xright = [x for x in P[:][0] if x > xmid]

Pleft = [(x,y) for x,y in P[:] if x <= xmid ]
Pright = [(x,y) for x,y in P[:] if x > xmid]

print Pleft

def dist(x1,y1):
    return math.sqrt((x1-origin_x)**2 + (y1-origin_y)**2)

worst = []
nearest = defaultdict(list)

for l in xrange(0,len(Pleft)):
    curr = dist(Pleft[l][0], Pleft[l][1])
    print curr
    if len(nearest) > 1:
        worst[0] = sorted(nearest.keys())[len(nearest)]

    if len(nearest) <= k:
        nearest[curr]= Pleft[l]
    else:
        if curr < worst[0]:
            nearest[curr].append(Pleft[l])
        else:
            break
    #nearest
        #best[0] = curr
        #best[1] = (Pleft[l])

for r in xrange(0,len(Pright)):
    curr = dist(Pright[r][0],Pright[r][1])
    if len(nearest) > 1:
        worst[0] = sorted(nearest.keys())[len(nearest)-1]
    if len(nearest) <= k:
        nearest[curr] = Pright[r]
    else:
        if curr < worst[0]:
            nearest[curr].append(Pright[r])
        else:
            break

print nearest

以下代码有效:

^{pr2}$

Tags: inforlenif字典distoriginelse
1条回答
网友
1楼 · 发布于 2024-06-26 13:22:21

你能试试这个代码吗? 我基本上改变了nearest[curr].append(P[left)而不是nearest[curr] = p[left]…它用元组替换列表。。。 你也不需要在P[:][0]中对x做x,你可以做:

x for x in P[0]

试试这个,如果它能解决你的问题请告诉我。。。。在

^{pr2}$

相关问题 更多 >