天道酬勤,学无止境

dictionary

How to read txt file and create dictionary with adjacency list python

问题 我正在尝试通过读取具有以下格式的 .txt 文件在 python 中创建邻接列表字典: 1 2 1 3 1 10 2 3 4 5 4 6 4 10 5 6 7 8 7 9 7 10 8 9 我希望结果字典采用这种格式: adjacency_list_dict = {[1]: {[2,3,10], [2]: [1,3]....}等 注意,尽管看起来像有向图,但它实际上是无向的,并且字典中每个键的列表值必须包含所有相邻节点,例如 [10]: [1,4,7] 尽管 10 不在任何 txt 文件行中的第一列。 现在我被这个代码块困住了: # Main file for assignment 2 input_filename = "example_graph_1.txt" def create_teams(): return [] def create_lex(): return {} def make_to_list(node): return [node] teams = create_teams() adjacency_graph = create_lex() with open(input_filename) as graph_input: for line in graph_input: nodes = [int(x) for x in line.split()] for i

2022-07-11 09:59:11    分类:技术分享    python   dictionary   graph   adjacency-list

Easy way to Print Values of a dictionary?

问题 我有以下代码: static void Main(string[] args) { // Add 5 Employees to a Dictionary. var Employees = new Dictionary<int, Employee>(); Employees.Add(1, new Employee(1, "John")); Employees.Add(2, new Employee(2, "Henry")); Employees.Add(3, new Employee(3, "Jason")); Employees.Add(4, new Employee(4, "Ron")); Employees.Add(5, new Employee(5, "Yan")); } 有没有一种简单的方法可以像在 Java 中那样以简单的方式打印字典的值? 例如,我希望能够打印如下内容: 键为 1 的员工:Id=1,Name=John 键为 2 的员工:Id=2,Name=Henry .. ETC.. 谢谢你。 对不起,我习惯了 Java! 回答1 foreach(var pair in Employees) { Console.WriteLine($"Employee with key {pair.Key}: Id={pair.Value.Id} Name={pair.Value

2022-07-11 09:53:07    分类:技术分享    c#   dictionary

How to sort a dictionary by two elements, reversing only one

问题 考虑以下字典: data = {'A':{'total':3}, 'B':{'total':5}, 'C':{'total':0}, 'D':{'total':0}, } 以上所需的顺序是 B、A、C、D。按总降序排列,然后按升序键。 当我调用sorted(data, key=lambda x: (data[x]['total'], x), reverse=True)我得到 B,A,D,C 因为在两个键上都调用了 reverse 。 有没有有效的方法来解决这个问题? 回答1 对负数进行排序,这将使总数反向排列,而无需使用reverse=True 。 然后按正序在密钥上打破关系: sorted(data, key=lambda x: (-data[x]['total'], x)) 演示: >>> data = {'A':{'total':3}, ... 'B':{'total':5}, ... 'C':{'total':0}, ... 'D':{'total':0}, ... } >>> sorted(data, key=lambda x: (-data[x]['total'], x)) ['B', 'A', 'C', 'D'] 此技巧仅适用于排序键中的数字组件; 如果您有多个键需要更改非数字的排序方向,则必须进行多遍排序(多次排序,从最后一个键到第一个键): # when

2022-07-11 09:53:03    分类:技术分享    python   sorting   dictionary

Testing for non-deterministic behavior of python function

问题 我们有一个需要确定性的大而复杂的函数。 它是我们公司的主力之一,涵盖了大量的代码。 由于 python 的 dict 迭代器,此代码通常变得不确定。 这种情况发生了很多次,而且很难追查到,而且往往没有立即注意到。 我们想编写一个自动化测试来检测非确定性,但我不知道该怎么做。 我们尝试在循环中运行该函数,并且测试结果始终相同,但有时,即使该函数是非确定性的,由于 dict 迭代器的任意但有些一致的顺序,该函数也会通​​过此测试。 有没有办法编写一个自动化测试来捕捉这种错误? 也许有一种方法可以破解 python 的 dict 以便在此测试期间迭代器是随机的而不是任意的? 这样重复调用函数就更有可能发散? 这似乎是一个相当复杂的方法,但我想不出任何其他方法。 编辑: 我们目前使用的是 Python 2.7。 我们对各种子模块进行了单元测试,但是由于 dict 顺序的任意但一致的性质,它们通常不会暴露不确定性。 此外,也许非确定性不是描述这个问题的正确方法。 这个函数需要 {id : data},但是 ids 的值不应该影响代码的结果,但是由于 python dict 排序,它有时会。 也许最好的测试方法是用随机值替换 id 并检查在多次运行不同 id 后输出是否相同。 回答1 如果要随机化哈希种子,可以将-R标志指定给 python: -R : use a pseudo

2022-07-11 09:37:05    分类:技术分享    python   dictionary   iteration   non-deterministic

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

"Flattening" a list of dictionaries

问题 所以我的目标是从: fruitColourMapping = [{'apple': 'red'}, {'banana': 'yellow'}] 至 finalMap = {'apple': 'red', 'banana': 'yellow'} 我得到的一个方法是: from itertools import chain fruits = list(chain.from_iterable([d.keys() for d in fruitColourMapping])) colour = list(chain.from_iterable([d.values() for d in fruitColourMapping])) return dict(zip(fruits, colour)) 有没有更好的pythonic方式? 回答1 为什么要复制? 在 Python 3 中,您可以使用新的 ChainMap: ChainMap 将多个 dicts(或其他映射)组合在一起以创建一个可更新的视图。 底层映射存储在列表中。 该列表是公开的,可以使用maps属性访问或更新。 没有其他状态。 查找连续搜索底层映射,直到找到一个键。 相反,写入、更新和删除仅对第一个映射进行操作。 您只需要这个(更改名称以遵守 Python 命名约定): from collections import

2022-07-11 09:34:11    分类:技术分享    python   dictionary

How to convert list to dict

问题 { '0' : 'a', '1' : 'b', '2' : 'c', '3' : 'd' } 回答1 print(dict(enumerate(["a","b","c", "d"]))) 回答2 使用字典理解。 >>> a = ["a","b","c", "d"] >>> {i: j for i,j in enumerate(a)} {0: 'a', 1: 'b', 2: 'c', 3: 'd'} 枚举 回答3 我认为你应该创建一个 dict 然后制作它: {'0' : list[0], '1' : list[1], '2' : list[2],'3' : list[3]} 因为我认为您不能以任何其他方式将列表转换为字典

2022-05-17 05:33:08    分类:技术分享    python-3.x   dictionary

Convert decimal to Roman numerals

问题 d_hsp={"1":"I","2":"II","3":"III","4":"IV","5":"V","6":"VI","7":"VII","8":"VIII", "9":"IX","10":"X","11":"XI","12":"XII","13":"XIII","14":"XIV","15":"XV", "16":"XVI","17":"XVII","18":"XVIII","19":"XIX","20":"XX","21":"XXI", "22":"XXII","23":"XXIII","24":"XXIV","25":"XXV"} HSP_OLD['tryl'] = HSP_OLD['tryl'].replace(d_hsp, regex=True) HSP_OLD是一个数据框, tryl是tryl的一列,下面是HSP_OLD中的一些值示例: SAF/HSP: Secondary diagnosis E code 1 SAF/HSP: Secondary diagnosis E code 11 我用字典代替,它适用于1-10,但对于11,它将变成“II”,对于12,它将变成“III”。 回答1 抱歉,没有注意到您不仅在更新字段,而且实际上想在最后替换一个数字,但即使是这种情况 - 将您的数字正确转换为罗马数字比映射所有可能的数字要好得多发生这种情况(如果数字大于 25

2022-05-17 03:57:08    分类:技术分享    python   regex   pandas   dictionary   replace

Check if something in a dictionary is the same as the max value in that dictionary?

问题 如何检查字典中的某些内容是否与该字典中的最大值相同。 换句话说,获取所有最大值而不是最低位置的最大值。 我有这个代码返回最大变量名称和值: d = {'g_dirt4': g_dirt4, 'g_destiny2': g_destiny2, 'g_southpark': g_southpark, 'g_codww2': g_codww2, 'g_bfront2': g_bfront2, 'g_reddead2': g_reddead2, 'g_fifa18': g_fifa18, 'g_motogp17': g_motogp17, 'g_elderscrolls': g_elderscrolls, 'g_crashbandicoot': g_crashbandicoot} print("g_dirt4", g_dirt4, "g_destiny2", g_destiny2, "g_southpark", g_southpark, "g_codww2", g_codww2, "g_bfront2", g_bfront2, "g_reddead2", g_reddead2, "g_fifa18", g_fifa18, "g_motogp17", g_motogp17, "g_elderscrolls", g_elderscrolls, "g_crashbandicoot", g

2022-05-17 03:40:04    分类:技术分享    python   dictionary   max

Newline "\n" not Working when Writing a .txt file Python

问题 for word in keys: out.write(word+" "+str(dictionary[word])+"\n") out=open("alice2.txt", "r") out.read() 出于某种原因,python 不是为字典中的每个单词都换行,而是在每个键和值之间打印 \n。 我什至尝试过单独写新行,像这样...... for word in keys: out.write(word+" "+str(dictionary[word])) out.write("\n") out=open("alice2.txt", "r") out.read() 我该怎么办? 回答1 假设你这样做: >>> with open('/tmp/file', 'w') as f: ... for i in range(10): ... f.write("Line {}\n".format(i)) ... 然后你做: >>> with open('/tmp/file') as f: ... f.read() ... 'Line 0\nLine 1\nLine 2\nLine 3\nLine 4\nLine 5\nLine 6\nLine 7\nLine 8\nLine 9\n' 看来Python 刚刚在文件中写入了文字\n 。 它没有。 转到终端: $ cat /tmp/file

2022-05-17 03:26:13    分类:技术分享    python   dictionary   text-files   file-writing