私信  •  关注

vash_the_stampede

vash_the_stampede 最近创建的主题
vash_the_stampede 最近回复了
5 年前
回复了 vash_the_stampede 创建的主题 » 删除重复项的第一个实例,并将其他项保存在python的.txt文件中

你可以用 collections.defaultdict 并创建一个字典,其中包含文档中每个值的所有索引。如果有多个索引,则可以通过切片字典值并将其附加到新列表中,仅写入从第一个项之后开始的值。

from collections import defaultdict

with open('test.txt') as f:
    content = (f.read()).split()

dd = defaultdict(list)

for i, v in enumerate(content):
    dd[v].append(i)

res = []

for v in dd.values():
    if len(v) == 1:
        res.append(content[v[0]])
    else:
        for i in v[1:]:
            res.append(content[i])

with open('out.txt', 'w') as f:
    f.write('\n'.join(map(str,res)))
222
111
111
111
5 年前
回复了 vash_the_stampede 创建的主题 » 在python中处理嵌入在字典列表中的元组列表

这可以用 lambda sorted 是的。使用时 已排序 具有 兰姆达 我们先出发 key=lambda x: 是的。现在你可以想想了 x 表示列表索引,以便按 assignment_1 我们要走了 x['assignments'] 如果我们的任务是 任务1 我们知道那是 0 索引 assignments 所以在一起 key=lambda x: x['assignments'][0] 是的。现在我们也可以 sort 第二个选择,那将是我们的平局,我们将使用 x[id] 并将与我们的主要排序因子在一个元组中。我们当然应该用 reverse = True 为了得到下降的分数,但是由于我们希望我们的平局是上升的,所以我们可以在 id 使用 -(x['id'])

总的来说,这类情况如下:

lista = sorted(students, key=lambda x: (x['assignments'][0], -(x['id'])), reverse = True)

棘手的部分是为传递的赋值选择合适的赋值索引,因为您可以使用 .split('_')[1] (使用时 .split('_') 'assignment_1' 我们生成一个新列表 ['assignemnt', '1'] 在这种情况下,我们现在可以采取 [1] 索引 .split() 那就是 1 作为 int 减去1得到 0个 这是相应的索引,其余的都是从它们的索引中去掉1。

def highest_n_grades(students, assignment_name, n):
    y = int(assignment_name.split('_')[1]) - 1
    lista = sorted(students, key=lambda x: (x['assignments'][y], 'id'), reverse = True)
    return lista [:n]   

print(highest_n_grades(student_list, 'assignment_1', 3))
# [{'id': 12345, 'first_name': 'Ed', 'last_name': 'Enders', 'assignments': [('assignment_1', 4), ('assignment_2', 1), ('assignment_3', 3)]}, {'id': 12344, 'first_name': 'Didi', 'last_name': 'Dawson', 'assignments': [('assignment_1', 3), ('assignment_2', 0), ('assignment_3', 2)]}, {'id': 12343, 'first_name': 'Carl', 'last_name': 'Cape', 'assignments': [('assignment_1', 2), ('assignment_2', 4), ('assignment_3', 1)]}]

使用伪分数演示平局破发案例:

print(highest_n_grades(student_list, 'assignment_1', 3))
# [{'id': 12344, 'first_name': 'Didi', 'last_name': 'Dawson', 'assignments': [('assignment_1', 4), ('assignment_2', 0), ('assignment_3', 2)]}, {'id': 12345, 'first_name': 'Ed', 'last_name': 'Enders', 'assignments': [('assignment_1', 4), ('assignment_2', 1), ('assignment_3', 3)]}, {'id': 12342, 'first_name': 'Boris', 'last_name': 'Bank', 'assignments': [('assignment_1', 2), ('assignment_2', 3), ('assignment_3', 0)]}]

进一步阅读

.split()

https://docs.python.org/3/library/stdtypes.html

关于使用 已排序

https://docs.python.org/3/library/functions.html https://wiki.python.org/moin/HowTo/Sorting

5 年前
回复了 vash_the_stampede 创建的主题 » 在python中删除多维数组中的重复值

使用 set 若要消除子列表中的重复项,请检查子列表项是否存在于 res 如果不将这些值附加到 tmp 列出,然后将该列表附加到 物件

res = []
lst = [set(i) for i in lst]

for i in lst:
    tmp = []
    for j in i:
        if not any(j in i for i in res):
            tmp.append(j)
    if tmp:
        res.append(sorted(tmp))

print(res)
# [[125.25, 128, 129], [124.25, 127, 130, 131], [124, 125, 126]]
5 年前
回复了 vash_the_stampede 创建的主题 » 在python中使用函数递增给定的数字

您可以设置这样的条件:如果骰子掷骰子使当前值超过100,它将被忽略,直到骰子掷骰子产生等于100的值。

from random import randint

current = 0
while current != 100:
    r = randint(1, 6)
    if current + r > 100:
        continue
    else:
        current += r
    print(current)
4
8
...
89
93
96
98
99
100
5 年前
回复了 vash_the_stampede 创建的主题 » 如何使用包含节点和边的python dict构建g networkx?

因此,问题似乎是有些元组没有正确地组织,无法从列表到字典进行一致的转换,您可以这样做:测试这些元组的索引

ls = [('a', 1), (2, 'b'), (3, 'c'), ('a', 2), ('b', 3)]
links = []
for i in ls:
    try:
        if i[0].isalpha():
            links.append({'source': i[1], 'target': i[0]})
    except AttributeError:
        links.append({'source': i[0], 'target': i[1]})

print(links)
# [{'source': 1, 'target': 'a'}, {'source': 2, 'target': 'b'}, {'source': 3, 'target': 'c'}, {'source': 2, 'target': 'a'}, {'source': 3, 'target': 'b'}]

我们要测试一下 i[0] 如果它的字母至少有一个字符,如果它是,我们将它附加到目标和 i[1] 到来源。另一方面,如果它恰好是 int 将引发一个错误,我们可以使用 try/except 捕捉那个错误,这告诉我们,现在我们的int在 我[ 0 ] 所以我们可以用 我[ 0 ] 作为来源和 我[ 1 ] 作为目标。

5 年前
回复了 vash_the_stampede 创建的主题 » 从类oop python的所有实例创建字典
class Country(object):
    """ Modeling a country immigration. """

    def __init__(name, immigrants, population, disease_numbers):

        self.name = name
        self.immigrants = immigrants
        self.infected = population
        self.disease_numbers = disease_numbers

    def update_pop(self, year, rate):
        self.infected = self.infected * year * rate

向类中添加函数是否有效?

5 年前
回复了 vash_the_stampede 创建的主题 » 如何在python中根据字典键获取唯一的数据

这将为您生成独特的词典,但不清楚 id 你想从每一个都没有提到你是如何决定第二选择的。

d2 = {i['series']: i for i in d}
d3 = list(d2.values())
[{'id': 590, 'series': 17, 'job_id': 19103}, {'id': 598, 'series': 18,
'job_id': 19193}, {'id': 598, 'series': 19, 'job_id': 19193}, {'id':
585, 'series': 20, 'job_id': 19103}]
5 年前
回复了 vash_the_stampede 创建的主题 » python程序不工作..主要部分显示错误
class point: 
    def __init__(self,z,d): 
        self.x = z 
        self.y = d 
    def display(self,z,d): 
        self.x = z #not self.z
        self.y = d #not self.d
    def setX(self, z): 
        self.x = z 
    def setY(self, d): 
        self.y = d 
    def getX(self): 
       return self.x 
    def getY(self): 
       return self.y 
    def show(self): 
       print(self.x) 
       print(self.y) 

首先修复此问题,您正在更新 display 使用两个新的变量,所以我们只是将这些变量 self.z / self.d

p1 = point(1,2)
print("Point P1:")
p1.show()

使用所需的值创建实例 __ini__(self, z, d) 需要一个 z and d 价值

print("Updated value:")
p1.display(5, 6)
p1.setX(9)
p1.setY(4)
p1.show()

如果 p1.display 正在将值更新为 5,6 那为什么还要用 setX / setY 你赚了很多钱 z=5, d=6 然后 z=9 d=4

然后重复这些小错误 p2