- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前遇到一个无法正确思考的问题
我遇到了一种情况,我正在以特定格式读取文本文件
(捕食者)吃掉(猎物)
我试图做的是将其放入字典中,但是在某些情况下会有多行。
(捕食者)吃掉(猎物)
同一个捕食者出现并吃掉不同的猎物。
到目前为止,这就是它的样子......
import sys
predpraydic={}#Establish universial dictionary for predator and prey
openFile = open(sys.argv[1], "rt") # open the file
data = openFile.read() # read the file
data = data.rstrip('\n') #removes the empty line ahead of the last line of the file
predpraylist = data.split('\n') #splits the read file into a list by the new line character
for items in range (0, len(predpraylist)): #loop for every item in the list in attempt to split the values and give a list of lists that contains 2 values for every list, predator and prey
predpraylist[items]=predpraylist[items].split("eats") #split "eats" to retrive the two values
for predpray in range (0, 2): #loop for the 2 values in the list
predpraylist[items][predpray]=predpraylist[items][predpray].strip() #removes the empty space caued by splitting the two values
for items in range (0, len(predpraylist)
if
for items in range (0, len(predpraylist)): # Loop in attempt to place these the listed items into a dictionary with a key of the predator to a list of prey
predpraydic[predpraylist[items][0]] = predpraylist[items][1]
print(predpraydic)
openFile.close()
如您所见,我只是将格式转储到一个列表中,然后尝试将其转换为字典。
但是这个方法只接受一个键值。我想要有两个东西的东西,比如
狮子吃掉斑马狮子吃狗
拥有一本字典
狮子:['斑马','狗']
我想不出一种方法来做到这一点。任何帮助将不胜感激。
最佳答案
有两种合理的方法可以创建包含您添加到的列表而不是单个项目的字典。第一个是在添加新值之前检查现有值。第二个是使用更复杂的数据结构,它负责在需要时创建列表。
这是第一种方法的简单示例:
predpreydic = {}
with open(sys.argv[1]) as f:
for line in f:
pred, eats, prey = line.split() # splits on whitespace, so three values
if pred in predpreydic:
predpreydic[pred].append(prey)
else:
predpreydic[pred] = [prey]
第一种方法的变体用字典上稍微更微妙的方法调用替换了 if
/else
block :
predpreydic.setdefault(pred, []).append(prey)
setdefault
方法将 predpredic[pred]
设置为空列表(如果尚不存在),然后返回该值(可以是新的空列表,也可以是以前的现有列表)。它的工作原理与解决该问题的另一种方法非常相似,即接下来的方法。
我提到的第二种方法涉及 the defaultdict
class来自 collections
模块(Python 标准库的一部分)。这是一个字典,每当您请求尚不存在的键时,它都会创建一个新的默认值。为了按需创建值,它使用您首次创建 defaultdict
时提供的工厂函数。
这是使用它的程序的样子:
from collections import defaultdict
predpreydic = defaultdict(list) # the "list" constructor is our factory function
with open(sys.argv[1]) as f:
for line in f:
pred, eats, prey = line.split()
predpreydic[pred].append(prey) #lists are created automatically as needed
关于python - 如何拥有一个字典,通过列表从另一个特定格式的列表附加多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13717117/
拥有/想要列表匹配算法 我正在一个高流量网站上实现一个元素交易系统。我有大量用户,每个用户都为许多特定项目维护一个 HAVE 列表和一个 WANT 列表。我正在寻找一种算法,使我能够根据您的 HAVE
我可以知道拥有 .hgtags 的目的是什么吗?我可以删除它吗?因为它不在 .hg文件夹,似乎“污染”了我的实际源代码目录。 https://bz.mercurial-scm.org/show_bug
在哪些用例中使用 [[nodiscard]] 有益类型? 关于类型,[[nodiscard]]如果任何返回该类型实例的函数的返回值被省略,则发出警告; (引自 p0068r0): If [[nodis
我知道当一个对象只有一个所有者时使用std::unique_ptr,当一个对象有多个所有者时使用std::shared_ptr。成为对象的唯一所有者意味着什么? 成为唯一所有者是否意味着其他人都无法看
我无法真正理解拥有 vendor 文件夹的目的。根据我了解到的情况, vendor 文件夹似乎只有在您尝试使您的存储库与早于 1.11 的 golang 版本兼容时才有用。 .我们正在运行 golan
我正在尝试学习如何在 Raspberry PI 上编码。我来自使用 Windows 和 VS Code 进行编码。现在我使用 Linux Mint 19.1 和 ssh 访问 Raspbian 4.1
我有一个带有“BlockType”枚举的图形程序。根据州的不同,这可能是以下几种情况之一:木头、石头、草地等。 最初,必须针对每种可能性执行各种纹理操作,但由于进行了一些重构,枚举仅用作整数,swit
我正在创建一个网络应用程序,让用户可以搜索餐馆和咖啡馆。由于我目前除了类型之外没有其他数据来区分这两者,所以我有两种存储餐馆列表的选择。 对餐厅和咖啡馆使用同一张表,并使用枚举(文本)列说明条目是餐厅
我有一个 5 人的小团队,我需要帮助寻找有关如何拥有一个集中式 MySQL 数据库的资源或建议。我们都以虚拟方式工作,并将所有文件托管在一个 github 上以集中所有内容。因此,在不同的计算机上拥有
SELECT dnum , SUM(IF(salary>20000, 1, 0)) AS Employee FROM project INNER JOIN works_on ON pno=pnumbe
我想在 javascript 中有一个数组,其中每个项目包含 2 个属性而不是 1 个,这怎么可能? 默认情况下,以下内容仅向项目添加一个属性: var headerCellWidths = new
我确定我对这个问题的措辞很糟糕,但这是我的问题: 我正在创建一长串地毯,每 block 地毯都有图片、标题、尺寸、原价和清仓价。我将每 block 地毯都放在自己的类别中,并对其余的地毯重复这样的操作
我正在编写一个延迟渲染器,并试图打包我的 gbuffer。 将漫反射和高光存储在一起会更好吗: vec4 difSpec = (diffuse.xyz, specular) // FORMAT_RGB
下面的程序给我一个链接时错误: #include struct Test { static constexpr char text[] = "Text"; }; int main() { s
想知道 - 如果了解Linux 的生活方式或 Linux 架构,是否会为在嵌入式设备上编程提供更好的思路,尤其是当它们具有某种操作系统时。 只是想确定我没有错过任何重要的事情:) 注意: 我来自 wi
如果要测试 iPhone 应用程序,拥有一个开发代码签名条款来运行任何带有 com.mydomain.* 的应用程序是不是一个坏主意? 为什么? 编辑: 请参阅上面的斜体编辑。 最佳答案 我对此表示怀
我正在开发我自己的 Swift 框架,以便在我的两个应用程序之间私下使用。我正在使用 Carthage 来管理该依赖项和其他依赖项。 我终于完成了框架的开发并将其连接到我的一个应用程序,毫不奇怪,该应
如果我有一个 C 类型的原始指针,是否可以从拥有指针数据的相同类型创建一个 std::vector 而无需任何数据复制(仅 move )?促使我问这个问题的是 std::vector 的 data()
有 2 个部分的好处是什么 - .data 和 .bss 用于流程范围变量。为什么不只拥有一个呢?我知道每个部分的用途。我正在使用 gcc。 最佳答案 .bss 消耗“内存”但不消耗可执行文件中的空间
我注意到,我们可以使用 StatefulWidget 构建 UI 的任何部分,而无需担心状态。 我想问的很简单,当我们可以将任何 UI 类构建为 StatefulWidget 时,首先拥有 State
我是一名优秀的程序员,十分优秀!