天道酬勤,学无止境

list

Sort list of dictionaries by multiple keys with different ordering

问题 我需要对这个字典列表进行排序: [ {K: 1, B: 2, A: 3, Z: 4, ... } , ... ] 订购应为: K - 下降 B - 下降 A - 上升 Z - 上升 我只发现了如何按升序或降序对所有键进行排序( reverse=True ): stats.sort(key=lambda x: (x['K'], x['B'], x['A'], x['Z'])) 任何人都可以帮忙,如何按不同的键排序? 回答1 如果你有数字作为值,你可以使用这个: stats.sort(key=lambda x: (-x['K'], -x['B'], x['A'], x['Z'])) 对于一般值: stats.sort(key=lambda x: (x['A'], x['Z'])) stats.sort(key=lambda x: (x['K'], x['B']), reverse=True)

2022-07-11 09:35:52    分类:技术分享    python   list   sorting   python-2.7   dictionary

Print python list without quotation marks or space after commas [duplicate]

问题 这个问题在这里已经有了答案: Pythonic 打印列表项的方法13 个答案 3年前关闭。 所以现在我有一个文件名列表。 我想在逗号后不带空格且不带引号的情况下打印它们。 所以基本上我有一个具有以下输出的文件: ['1', '2', '3'] 我希望输出是 1,2,3 回答1 >>> your_list = ['1', '2', '3'] >>> print(', '.join(your_list)) 1, 2, 3

2022-05-17 05:09:29    分类:技术分享    python   list

Gson Parsing Generic List From Reflected Field Type

问题 我在将列表类型从反射对象转换为该对象的 set 方法时遇到问题。 我不确定问题是在前端还是在 Gson 解析端,但我的测试代码在这里: public static void main(String[] args) throws Exception{ String json = "[52881]"; ListObject lo = new ListObject(); for(Field f : lo.getClass().getDeclaredFields()) if(List.class.isAssignableFrom(f.getType())){ Method m = lo.getClass().getMethod( new StringBuilder("set").append(f.getName().substring(0,1).toUpperCase()).append(f.getName().substring(1,f.getName().length())).toString(), f.getType() ); System.out.println(((ParameterizedType) f.getGenericType()).getActualTypeArguments()[0]); getListFromJson(m, lo, json, (

2022-05-17 02:50:37    分类:技术分享    java   list   generics   serialization   gson

Get the name of a list

问题 我不确定这是否可以通过简单的方式实现,但我正在尝试获取列表对象的名称。 我确实尝试使用__name__但我收到错误,因为列表对象没有属性__name__ 甚至可以获取列表的变量名称,而无需子类化列表对象并添加__name__属性? 编辑这与建议的副本无关。 这是我的场景: cucumbers=[] oranges=[] salads=[] ... masterlist=[cucumbers, oranges, salads] 有时我只得到 2 个列表,有时我得到 5 个,所以 masterlist 每次都有不同数量的列表; 当我打印它时,我只得到值; 所以我不知道第一个清单是黄瓜、橙子、沙拉还是其他什么。 我正在尝试查询列表,以便获取variable name ,而不是对象的类型。 所以print masterlist[1].name会给我“黄瓜”或与该列表关联的任何名称。 回答1 您可以简单地使用字典: masterdict={'cucumbers': cucumbers, 'oranges': oranges, 'salads': salads} 而不是检查名称,而是遍历字典的项目: for name, sublist in masterdict.items(): print(name, sublist) 如果您想要订购它(并且您没有订购dict的 Python 3.6)

2022-05-16 23:36:13    分类:技术分享    python   list

Use input of purrr's map function to create a named list as output in R

问题 我正在使用 R 中 purrr 包的 map 函数,它给出一个列表作为输出。 现在我希望输出是基于输入的命名列表。 下面给出一个例子。 input <- c("a", "b", "c") output <- purrr::map(input, function(x) {paste0("test-", x)}) 从这里我想使用以下方法访问列表的元素: output$a 或者 output$b 回答1 The recommended solution: c("a", "b", "c") %>% purrr::set_names() %>% purrr::map(~paste0('test-', .)) 回答2 更新 现在在 2020 年,@mihagazvoda 的答案表格描述了正确的方法:在应用map之前只需set_names c("a", "b", "c") %>% purrr::set_names() %>% purrr::map(~paste0('test-', .)) 过时的答案 接受的解决方案有效,但存在重复参数( input ),这可能会导致错误并在使用管道时中断流程%>% 。 另一种解决方案是使用%>%运算符的更多功能 1:5 %>% { set_names(map(., ~ .x + 3), .) } %>% print # ... or something

2022-05-16 23:15:04    分类:技术分享    r   list   named   purrr

Making equal size lists in Python

问题 我有 3 个长度不等的不同列表。 我想用“X”附加较短的列表并使大小等于最长列表的长度。 A = [10,20,30,40,50] B = ["A", "B", "C"] C = ["X1", "X2"] 附加 "X" 后,应如下所示: A = [10,20,30,40,50] B = ["A", "B", "C", "X","X"] C = ["P1", "P2", "X", "X", "X"] 我已经使用下面的代码来实现它, for i, a in enumerate(A): if i < len(B): pass else: B.append('X') 我怎样才能在 python 中有效地做到这一点? 回答1 B.extend(['X'] * (len(A)-len(B))) 回答2 计算最大长度,并为每个列表附加增量。 在 Python 中, List有一个二元运算符+将多个列表连接在一起,还有一个*来平铺自身。 A = [10,20,30,40,50] B = ["A", "B", "C"] C = ["X1", "X2"] max_length = max(max(len(A), len(B)), len(C)) A += ['X'] * (max_length - len(A)) B += ['X'] * (max_length - len(B)) C += [

2022-05-16 16:16:16    分类:技术分享    python   arrays   list

Python- How to form a random partition of 2 lists [closed]

问题 关闭。 这个问题需要调试细节。 它目前不接受答案。 想改进这个问题? 更新问题,使其成为 Stack Overflow 的主题。 5年前关闭。 改进这个问题 有谁知道如何在 python 中形成 2 个列表(List1 和 List2)的随机分区? 列表不必具有相同的大小。 例如: S = [1,2,3,4,5,6,7] List1=[3,6,1,2] List2=[5,4,7] 或者 List1 =[3,5] List2=[1,2,4,7,6] 回答1 import random s = [1,2,3,4,5,6,7] random.shuffle(s) cut = random.randint(0, len(s)) list_1 = s[:cut] list_2 = s[cut:] print list_1 print list_2 回答2 我会推荐: 随机或随机重新排列列表然后选择分解列表的随机索引 代码: import random S = [1,2,3,4,5,6,7] random.shuffle(S) index = random.randint(0, len(S)) List1 = S[index:] List2 = S[:index] 回答3 import random def split(S): x = random.randint(0,len(S)) y

2022-05-16 15:33:07    分类:技术分享    python   list   random   partition

ConcurrentModificationException Occuring When Retrieving List Size(ConcurrentModificationException Occuring When Retrieving List Size)

问题 对于我的数据结构类中的一个项目,我的任务是创建一个 3 维范围树,其中每个维度都是一个 BST。 我看了这个问题,但这是一个Android问题,我们问题的原因似乎不同,唯一的答案没有被接受。 代码墙即将推出。 对不起。 涉及的课程: Point3D<T> :包含点坐标的通用类。 T extends Comparable<T> ,并且Point3D也扩展了它 RangeTree<T> :包含整个树的根以及构建和搜索树的方法的通用类 有比这 2 个更多的类,但它们似乎与为什么我得到 ConcurrentModificationException 无关(链接到 CME)。 这是我运行驱动程序时得到的: Read in 10 points //Number of points read in driver, this is okay 5//first median, 10 / 2 2//second median 5 / 2 first[0.082 0.791 0.832 , 0.366 0.136 0.009 ]//correct second[0.138 0.968 0.391 , 0.414 0.785 0.883 , 0.546 0.044 0.133 ]//correct merged[0.082 0.791 0.832 , 0.366 0.136 0.009 ]//not

2022-05-16 13:45:11    分类:技术分享    java   list   binary-search-tree   concurrentmodification

create a list of all the subsets of a given list in python 3.x

问题 [[1],[2],[3],[1,2],[2,3],[1,3],[1,2,3],[]] 回答1 您可以使用 itertools.combinations 来获取组合: >>> import itertools >>> xs = [1, 2, 3] >>> itertools.combinations(xs, 2) # returns an iterator <itertools.combinations object at 0x7f88f838ff48> >>> list(itertools.combinations(xs, 2)) # yields 2-length subsequences [(1, 2), (1, 3), (2, 3)] >>> for i in range(0, len(xs) + 1): # to get all lengths: 0 to 3 ... for subset in itertools.combinations(xs, i): ... print(list(subset)) ... [] [1] [2] [3] [1, 2] [1, 3] [2, 3] [1, 2, 3] 结合列表理解,你会得到你想要的: >>> [list(subset) for i in range(0, len(xs) + 1) for subset in

2022-05-16 13:30:04    分类:技术分享    python   list   python-3.x

Calculate Fibonacci numbers up to at least n

问题 我正在尝试创建一个允许用户输入数字的函数,结果将是一个列表,其中包含直到输入的斐波那契数字,如果输入不在系列中,则在上面的一个列表。 例如,输入4将返回[0, 1, 1, 2, 3, 5]但输入3将返回[0, 1, 1, 2, 3] 。 我已经设法使用以下功能做到这一点: def fibonacci(n): series = [0] if (n == 0): pass else: series.append(1) if (n == 1): pass else: while(series[len(series)-1] < n): newValue = series[len(series)-1] + series[len(series)-2] series.append(newValue) print(series) 但是,我现在希望能够递归地执行此操作,有什么想法吗? 回答1 一个可能的解决方案如下 def fibo_up_to(n): if n < 2: return [1,1] else: L = fibo_up_to(n-1) if L[-1] < n: L.append(L[-1] + L[-2]) return L 这个想法是,要返回所有小于n的斐波那契数的列表,您可以请求那些小于n-1的列表,然后可能只添加一个元素。 如果我们将前两个数字定义为[1, 1]这将从 2

2022-05-16 07:34:14    分类:技术分享    python   list   recursion   fibonacci